@metamask-previews/token-search-discovery-controller 1.0.0-preview-59b4e66e → 1.0.0-preview-4c4eb52a
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 +1 -18
- package/dist/index.cjs +1 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -3
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +0 -2
- package/dist/index.mjs.map +1 -1
- package/dist/token-search-api-service/token-search-api-service.cjs +3 -3
- package/dist/token-search-api-service/token-search-api-service.cjs.map +1 -1
- package/dist/token-search-api-service/token-search-api-service.mjs +3 -3
- package/dist/token-search-api-service/token-search-api-service.mjs.map +1 -1
- package/dist/token-search-discovery-controller.cjs +4 -9
- package/dist/token-search-discovery-controller.cjs.map +1 -1
- package/dist/token-search-discovery-controller.d.cts +5 -8
- package/dist/token-search-discovery-controller.d.cts.map +1 -1
- package/dist/token-search-discovery-controller.d.mts +5 -8
- package/dist/token-search-discovery-controller.d.mts.map +1 -1
- package/dist/token-search-discovery-controller.mjs +4 -9
- package/dist/token-search-discovery-controller.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -56
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +1 -56
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/package.json +2 -3
- package/dist/test/constants.cjs +0 -8
- package/dist/test/constants.cjs.map +0 -1
- package/dist/test/constants.d.cts +0 -5
- package/dist/test/constants.d.cts.map +0 -1
- package/dist/test/constants.d.mts +0 -5
- package/dist/test/constants.d.mts.map +0 -1
- package/dist/test/constants.mjs +0 -5
- package/dist/test/constants.mjs.map +0 -1
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.cjs +0 -10
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.cjs.map +0 -1
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.d.cts +0 -17
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.d.cts.map +0 -1
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.d.mts +0 -17
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.d.mts.map +0 -1
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.mjs +0 -6
- package/dist/token-discovery-api-service/abstract-token-discovery-api-service.mjs.map +0 -1
- package/dist/token-discovery-api-service/token-discovery-api-service.cjs +0 -48
- package/dist/token-discovery-api-service/token-discovery-api-service.cjs.map +0 -1
- package/dist/token-discovery-api-service/token-discovery-api-service.d.cts +0 -8
- package/dist/token-discovery-api-service/token-discovery-api-service.d.cts.map +0 -1
- package/dist/token-discovery-api-service/token-discovery-api-service.d.mts +0 -8
- package/dist/token-discovery-api-service/token-discovery-api-service.d.mts.map +0 -1
- package/dist/token-discovery-api-service/token-discovery-api-service.mjs +0 -44
- package/dist/token-discovery-api-service/token-discovery-api-service.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,23 +7,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
-
### Added
|
|
11
|
-
|
|
12
|
-
- Introduce the `logoUrl` property to the `TokenSearchApiService` response
|
|
13
|
-
- Specifically in the `TokenSearchResponseItem` type
|
|
14
|
-
- Introduce `TokenDiscoveryApiService` to keep discovery and search responsibilities separate
|
|
15
|
-
- This service is responsible for fetching discover related data
|
|
16
|
-
- Add `getTrendingTokens` method to fetch trending tokens by chain
|
|
17
|
-
- Add `TokenTrendingResponseItem` type for trending token responses
|
|
18
|
-
- Export `TokenSearchResponseItem` type from the package index
|
|
19
|
-
|
|
20
|
-
### Changed
|
|
21
|
-
|
|
22
|
-
- Update the TokenSearchApiService to use the updated URL for `searchTokens`
|
|
23
|
-
- The URL is now `/tokens-search` instead of `/tokens-search/name`
|
|
24
|
-
- Changed the "name" parameter to "query" in the `searchTokens` method
|
|
25
|
-
- These updates align with the Portfolio API's `/tokens-search` endpoint
|
|
26
|
-
|
|
27
10
|
## [1.0.0]
|
|
28
11
|
|
|
29
12
|
### Added
|
|
@@ -31,7 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
31
14
|
- Introduce the TokenSearchDiscoveryController ([#5142](https://github.com/MetaMask/core/pull/5142/))
|
|
32
15
|
- This controller manages token search and discovery through the Portfolio API
|
|
33
16
|
- Introduce the TokenSearchApiService ([#5142](https://github.com/MetaMask/core/pull/5142/))
|
|
34
|
-
- This service is responsible for making
|
|
17
|
+
- This service is responsible for making requests to the Portfolio API
|
|
35
18
|
- Specifically, it handles the `tokens-search` endpoint which returns a list of tokens based on the provided query parameters
|
|
36
19
|
|
|
37
20
|
[Unreleased]: https://github.com/MetaMask/core/compare/@metamask/token-search-discovery-controller@1.0.0...HEAD
|
package/dist/index.cjs
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.TokenSearchApiService = exports.AbstractTokenSearchApiService = exports.TokenSearchDiscoveryController = void 0;
|
|
4
4
|
var token_search_discovery_controller_1 = require("./token-search-discovery-controller.cjs");
|
|
5
5
|
Object.defineProperty(exports, "TokenSearchDiscoveryController", { enumerable: true, get: function () { return token_search_discovery_controller_1.TokenSearchDiscoveryController; } });
|
|
6
6
|
var abstract_token_search_api_service_1 = require("./token-search-api-service/abstract-token-search-api-service.cjs");
|
|
7
7
|
Object.defineProperty(exports, "AbstractTokenSearchApiService", { enumerable: true, get: function () { return abstract_token_search_api_service_1.AbstractTokenSearchApiService; } });
|
|
8
8
|
var token_search_api_service_1 = require("./token-search-api-service/token-search-api-service.cjs");
|
|
9
9
|
Object.defineProperty(exports, "TokenSearchApiService", { enumerable: true, get: function () { return token_search_api_service_1.TokenSearchApiService; } });
|
|
10
|
-
var abstract_token_discovery_api_service_1 = require("./token-discovery-api-service/abstract-token-discovery-api-service.cjs");
|
|
11
|
-
Object.defineProperty(exports, "AbstractTokenDiscoveryApiService", { enumerable: true, get: function () { return abstract_token_discovery_api_service_1.AbstractTokenDiscoveryApiService; } });
|
|
12
|
-
var token_discovery_api_service_1 = require("./token-discovery-api-service/token-discovery-api-service.cjs");
|
|
13
|
-
Object.defineProperty(exports, "TokenDiscoveryApiService", { enumerable: true, get: function () { return token_discovery_api_service_1.TokenDiscoveryApiService; } });
|
|
14
10
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6FAAqF;AAA5E,mJAAA,8BAA8B,OAAA;
|
|
1
|
+
{"version":3,"file":"index.cjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6FAAqF;AAA5E,mJAAA,8BAA8B,OAAA;AAIvC,sHAA6G;AAApG,kJAAA,6BAA6B,OAAA;AACtC,oGAA4F;AAAnF,iIAAA,qBAAqB,OAAA","sourcesContent":["export { TokenSearchDiscoveryController } from './token-search-discovery-controller';\nexport type { TokenSearchDiscoveryControllerState } from './token-search-discovery-controller';\nexport type { TokenSearchResponseItem } from './types';\n\nexport { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service';\nexport { TokenSearchApiService } from './token-search-api-service/token-search-api-service';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export { TokenSearchDiscoveryController } from "./token-search-discovery-controller.cjs";
|
|
2
2
|
export type { TokenSearchDiscoveryControllerState } from "./token-search-discovery-controller.cjs";
|
|
3
|
-
export type { TokenSearchResponseItem
|
|
3
|
+
export type { TokenSearchResponseItem } from "./types.cjs";
|
|
4
4
|
export { AbstractTokenSearchApiService } from "./token-search-api-service/abstract-token-search-api-service.cjs";
|
|
5
5
|
export { TokenSearchApiService } from "./token-search-api-service/token-search-api-service.cjs";
|
|
6
|
-
export { AbstractTokenDiscoveryApiService } from "./token-discovery-api-service/abstract-token-discovery-api-service.cjs";
|
|
7
|
-
export { TokenDiscoveryApiService } from "./token-discovery-api-service/token-discovery-api-service.cjs";
|
|
8
6
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;AACrF,YAAY,EAAE,mCAAmC,EAAE,gDAA4C;AAC/F,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.cts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;AACrF,YAAY,EAAE,mCAAmC,EAAE,gDAA4C;AAC/F,YAAY,EAAE,uBAAuB,EAAE,oBAAgB;AAEvD,OAAO,EAAE,6BAA6B,EAAE,yEAAqE;AAC7G,OAAO,EAAE,qBAAqB,EAAE,gEAA4D"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
export { TokenSearchDiscoveryController } from "./token-search-discovery-controller.mjs";
|
|
2
2
|
export type { TokenSearchDiscoveryControllerState } from "./token-search-discovery-controller.mjs";
|
|
3
|
-
export type { TokenSearchResponseItem
|
|
3
|
+
export type { TokenSearchResponseItem } from "./types.mjs";
|
|
4
4
|
export { AbstractTokenSearchApiService } from "./token-search-api-service/abstract-token-search-api-service.mjs";
|
|
5
5
|
export { TokenSearchApiService } from "./token-search-api-service/token-search-api-service.mjs";
|
|
6
|
-
export { AbstractTokenDiscoveryApiService } from "./token-discovery-api-service/abstract-token-discovery-api-service.mjs";
|
|
7
|
-
export { TokenDiscoveryApiService } from "./token-discovery-api-service/token-discovery-api-service.mjs";
|
|
8
6
|
//# sourceMappingURL=index.d.mts.map
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;AACrF,YAAY,EAAE,mCAAmC,EAAE,gDAA4C;AAC/F,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;AACrF,YAAY,EAAE,mCAAmC,EAAE,gDAA4C;AAC/F,YAAY,EAAE,uBAAuB,EAAE,oBAAgB;AAEvD,OAAO,EAAE,6BAA6B,EAAE,yEAAqE;AAC7G,OAAO,EAAE,qBAAqB,EAAE,gEAA4D"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
export { TokenSearchDiscoveryController } from "./token-search-discovery-controller.mjs";
|
|
2
2
|
export { AbstractTokenSearchApiService } from "./token-search-api-service/abstract-token-search-api-service.mjs";
|
|
3
3
|
export { TokenSearchApiService } from "./token-search-api-service/token-search-api-service.mjs";
|
|
4
|
-
export { AbstractTokenDiscoveryApiService } from "./token-discovery-api-service/abstract-token-discovery-api-service.mjs";
|
|
5
|
-
export { TokenDiscoveryApiService } from "./token-discovery-api-service/token-discovery-api-service.mjs";
|
|
6
4
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,gDAA4C;AAIrF,OAAO,EAAE,6BAA6B,EAAE,yEAAqE;AAC7G,OAAO,EAAE,qBAAqB,EAAE,gEAA4D","sourcesContent":["export { TokenSearchDiscoveryController } from './token-search-discovery-controller';\nexport type { TokenSearchDiscoveryControllerState } from './token-search-discovery-controller';\nexport type { TokenSearchResponseItem } from './types';\n\nexport { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service';\nexport { TokenSearchApiService } from './token-search-api-service/token-search-api-service';\n"]}
|
|
@@ -24,12 +24,12 @@ class TokenSearchApiService extends abstract_token_search_api_service_1.Abstract
|
|
|
24
24
|
__classPrivateFieldSet(this, _TokenSearchApiService_baseUrl, baseUrl, "f");
|
|
25
25
|
}
|
|
26
26
|
async searchTokens(tokenSearchParams) {
|
|
27
|
-
const url = new URL('/tokens-search', __classPrivateFieldGet(this, _TokenSearchApiService_baseUrl, "f"));
|
|
27
|
+
const url = new URL('/tokens-search/name', __classPrivateFieldGet(this, _TokenSearchApiService_baseUrl, "f"));
|
|
28
28
|
if (tokenSearchParams?.chains && tokenSearchParams.chains.length > 0) {
|
|
29
29
|
url.searchParams.append('chains', tokenSearchParams.chains.join());
|
|
30
30
|
}
|
|
31
|
-
if (tokenSearchParams?.
|
|
32
|
-
url.searchParams.append('
|
|
31
|
+
if (tokenSearchParams?.name) {
|
|
32
|
+
url.searchParams.append('name', tokenSearchParams.name);
|
|
33
33
|
}
|
|
34
34
|
if (tokenSearchParams?.limit) {
|
|
35
35
|
url.searchParams.append('limit', tokenSearchParams.limit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-api-service.cjs","sourceRoot":"","sources":["../../src/token-search-api-service/token-search-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+FAAoF;AAGpF,MAAa,qBAAsB,SAAQ,iEAA6B;IAGtE,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,iDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,kCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAqC;QAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"token-search-api-service.cjs","sourceRoot":"","sources":["../../src/token-search-api-service/token-search-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+FAAoF;AAGpF,MAAa,qBAAsB,SAAQ,iEAA6B;IAGtE,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,iDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,kCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAqC;QAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,uBAAA,IAAI,sCAAS,CAAC,CAAC;QAE1D,IAAI,iBAAiB,EAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACpE;QACD,IAAI,iBAAiB,EAAE,IAAI,EAAE;YAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACzD;QACD,IAAI,iBAAiB,EAAE,KAAK,EAAE;YAC5B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC3D;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,EAAE,CAC/D,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAzCD,sDAyCC","sourcesContent":["import { AbstractTokenSearchApiService } from './abstract-token-search-api-service';\nimport type { TokenSearchParams, TokenSearchResponseItem } from '../types';\n\nexport class TokenSearchApiService extends AbstractTokenSearchApiService {\n readonly #baseUrl: string;\n\n constructor(baseUrl: string) {\n super();\n if (!baseUrl) {\n throw new Error('Portfolio API URL is not set');\n }\n this.#baseUrl = baseUrl;\n }\n\n async searchTokens(\n tokenSearchParams?: TokenSearchParams,\n ): Promise<TokenSearchResponseItem[]> {\n const url = new URL('/tokens-search/name', this.#baseUrl);\n\n if (tokenSearchParams?.chains && tokenSearchParams.chains.length > 0) {\n url.searchParams.append('chains', tokenSearchParams.chains.join());\n }\n if (tokenSearchParams?.name) {\n url.searchParams.append('name', tokenSearchParams.name);\n }\n if (tokenSearchParams?.limit) {\n url.searchParams.append('limit', tokenSearchParams.limit);\n }\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Portfolio API request failed with status: ${response.status}`,\n );\n }\n\n return response.json();\n }\n}\n"]}
|
|
@@ -21,12 +21,12 @@ export class TokenSearchApiService extends AbstractTokenSearchApiService {
|
|
|
21
21
|
__classPrivateFieldSet(this, _TokenSearchApiService_baseUrl, baseUrl, "f");
|
|
22
22
|
}
|
|
23
23
|
async searchTokens(tokenSearchParams) {
|
|
24
|
-
const url = new URL('/tokens-search', __classPrivateFieldGet(this, _TokenSearchApiService_baseUrl, "f"));
|
|
24
|
+
const url = new URL('/tokens-search/name', __classPrivateFieldGet(this, _TokenSearchApiService_baseUrl, "f"));
|
|
25
25
|
if (tokenSearchParams?.chains && tokenSearchParams.chains.length > 0) {
|
|
26
26
|
url.searchParams.append('chains', tokenSearchParams.chains.join());
|
|
27
27
|
}
|
|
28
|
-
if (tokenSearchParams?.
|
|
29
|
-
url.searchParams.append('
|
|
28
|
+
if (tokenSearchParams?.name) {
|
|
29
|
+
url.searchParams.append('name', tokenSearchParams.name);
|
|
30
30
|
}
|
|
31
31
|
if (tokenSearchParams?.limit) {
|
|
32
32
|
url.searchParams.append('limit', tokenSearchParams.limit);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-api-service.mjs","sourceRoot":"","sources":["../../src/token-search-api-service/token-search-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,6BAA6B,EAAE,gDAA4C;AAGpF,MAAM,OAAO,qBAAsB,SAAQ,6BAA6B;IAGtE,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,iDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,kCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAqC;QAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"token-search-api-service.mjs","sourceRoot":"","sources":["../../src/token-search-api-service/token-search-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,6BAA6B,EAAE,gDAA4C;AAGpF,MAAM,OAAO,qBAAsB,SAAQ,6BAA6B;IAGtE,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,iDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,kCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAqC;QAErC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,qBAAqB,EAAE,uBAAA,IAAI,sCAAS,CAAC,CAAC;QAE1D,IAAI,iBAAiB,EAAE,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACpE;QACD,IAAI,iBAAiB,EAAE,IAAI,EAAE;YAC3B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;SACzD;QACD,IAAI,iBAAiB,EAAE,KAAK,EAAE;YAC5B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;SAC3D;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,EAAE,CAC/D,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF","sourcesContent":["import { AbstractTokenSearchApiService } from './abstract-token-search-api-service';\nimport type { TokenSearchParams, TokenSearchResponseItem } from '../types';\n\nexport class TokenSearchApiService extends AbstractTokenSearchApiService {\n readonly #baseUrl: string;\n\n constructor(baseUrl: string) {\n super();\n if (!baseUrl) {\n throw new Error('Portfolio API URL is not set');\n }\n this.#baseUrl = baseUrl;\n }\n\n async searchTokens(\n tokenSearchParams?: TokenSearchParams,\n ): Promise<TokenSearchResponseItem[]> {\n const url = new URL('/tokens-search/name', this.#baseUrl);\n\n if (tokenSearchParams?.chains && tokenSearchParams.chains.length > 0) {\n url.searchParams.append('chains', tokenSearchParams.chains.join());\n }\n if (tokenSearchParams?.name) {\n url.searchParams.append('name', tokenSearchParams.name);\n }\n if (tokenSearchParams?.limit) {\n url.searchParams.append('limit', tokenSearchParams.limit);\n }\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Portfolio API request failed with status: ${response.status}`,\n );\n }\n\n return response.json();\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
10
10
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
11
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
12
|
};
|
|
13
|
-
var _TokenSearchDiscoveryController_tokenSearchService
|
|
13
|
+
var _TokenSearchDiscoveryController_tokenSearchService;
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
15
|
exports.TokenSearchDiscoveryController = exports.getDefaultTokenSearchDiscoveryControllerState = void 0;
|
|
16
16
|
const base_controller_1 = require("@metamask/base-controller");
|
|
@@ -37,10 +37,10 @@ function getDefaultTokenSearchDiscoveryControllerState() {
|
|
|
37
37
|
exports.getDefaultTokenSearchDiscoveryControllerState = getDefaultTokenSearchDiscoveryControllerState;
|
|
38
38
|
/**
|
|
39
39
|
* The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.
|
|
40
|
-
* It fetches token search results
|
|
40
|
+
* It fetches token search results from the portfolio API.
|
|
41
41
|
*/
|
|
42
42
|
class TokenSearchDiscoveryController extends base_controller_1.BaseController {
|
|
43
|
-
constructor({ tokenSearchService,
|
|
43
|
+
constructor({ tokenSearchService, state = {}, messenger, }) {
|
|
44
44
|
super({
|
|
45
45
|
name: controllerName,
|
|
46
46
|
metadata: tokenSearchDiscoveryControllerMetadata,
|
|
@@ -48,9 +48,7 @@ class TokenSearchDiscoveryController extends base_controller_1.BaseController {
|
|
|
48
48
|
state: { ...getDefaultTokenSearchDiscoveryControllerState(), ...state },
|
|
49
49
|
});
|
|
50
50
|
_TokenSearchDiscoveryController_tokenSearchService.set(this, void 0);
|
|
51
|
-
_TokenSearchDiscoveryController_tokenDiscoveryService.set(this, void 0);
|
|
52
51
|
__classPrivateFieldSet(this, _TokenSearchDiscoveryController_tokenSearchService, tokenSearchService, "f");
|
|
53
|
-
__classPrivateFieldSet(this, _TokenSearchDiscoveryController_tokenDiscoveryService, tokenDiscoveryService, "f");
|
|
54
52
|
}
|
|
55
53
|
async searchTokens(tokenSearchParams) {
|
|
56
54
|
const results = await __classPrivateFieldGet(this, _TokenSearchDiscoveryController_tokenSearchService, "f").searchTokens(tokenSearchParams);
|
|
@@ -60,10 +58,7 @@ class TokenSearchDiscoveryController extends base_controller_1.BaseController {
|
|
|
60
58
|
});
|
|
61
59
|
return results;
|
|
62
60
|
}
|
|
63
|
-
async getTrendingTokens(params) {
|
|
64
|
-
return __classPrivateFieldGet(this, _TokenSearchDiscoveryController_tokenDiscoveryService, "f").getTrendingTokensByChains(params);
|
|
65
|
-
}
|
|
66
61
|
}
|
|
67
62
|
exports.TokenSearchDiscoveryController = TokenSearchDiscoveryController;
|
|
68
|
-
_TokenSearchDiscoveryController_tokenSearchService = new WeakMap()
|
|
63
|
+
_TokenSearchDiscoveryController_tokenSearchService = new WeakMap();
|
|
69
64
|
//# sourceMappingURL=token-search-discovery-controller.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-discovery-controller.cjs","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,+DAA2D;
|
|
1
|
+
{"version":3,"file":"token-search-discovery-controller.cjs","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAKA,+DAA2D;AAK3D,kBAAkB;AAElB,MAAM,cAAc,GAAG,gCAAgC,CAAC;AASxD,MAAM,sCAAsC,GAAG;IAC7C,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACnD,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;CAChD,CAAC;AA6DX;;;;;;;GAOG;AACH,SAAgB,6CAA6C;IAC3D,OAAO;QACL,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,IAAI;KAC1B,CAAC;AACJ,CAAC;AALD,sGAKC;AAED;;;GAGG;AACH,MAAa,8BAA+B,SAAQ,gCAInD;IAGC,YAAY,EACV,kBAAkB,EAClB,KAAK,GAAG,EAAE,EACV,SAAS,GAKV;QACC,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,sCAAsC;YAChD,SAAS;YACT,KAAK,EAAE,EAAE,GAAG,6CAA6C,EAAE,EAAE,GAAG,KAAK,EAAE;SACxE,CAAC,CAAC;QAhBI,qEAAmD;QAkB1D,uBAAA,IAAI,sDAAuB,kBAAkB,MAAA,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAoC;QAEpC,MAAM,OAAO,GACX,MAAM,uBAAA,IAAI,0DAAoB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEjE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACpB,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;YAC/B,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAvCD,wEAuCC","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\n\nimport type { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service';\nimport type { TokenSearchParams, TokenSearchResponseItem } from './types';\n\n// === GENERAL ===\n\nconst controllerName = 'TokenSearchDiscoveryController';\n\n// === STATE ===\n\nexport type TokenSearchDiscoveryControllerState = {\n recentSearches: TokenSearchResponseItem[];\n lastSearchTimestamp: number | null;\n};\n\nconst tokenSearchDiscoveryControllerMetadata = {\n recentSearches: { persist: true, anonymous: false },\n lastSearchTimestamp: { persist: true, anonymous: false },\n} as const;\n\n// === MESSENGER ===\n\n/**\n * The action which can be used to retrieve the state of the\n * {@link TokenSearchDiscoveryController}.\n */\nexport type TokenSearchDiscoveryControllerGetStateAction =\n ControllerGetStateAction<\n typeof controllerName,\n TokenSearchDiscoveryControllerState\n >;\n\n/**\n * All actions that {@link TokenSearchDiscoveryController} registers, to be\n * called externally.\n */\nexport type TokenSearchDiscoveryControllerActions =\n TokenSearchDiscoveryControllerGetStateAction;\n\n/**\n * All actions that {@link TokenSearchDiscoveryController} calls internally.\n */\ntype AllowedActions = never;\n\n/**\n * The event that {@link TokenSearchDiscoveryController} publishes when updating\n * state.\n */\nexport type TokenSearchDiscoveryControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n TokenSearchDiscoveryControllerState\n >;\n\n/**\n * All events that {@link TokenSearchDiscoveryController} publishes, to be\n * subscribed to externally.\n */\nexport type TokenSearchDiscoveryControllerEvents =\n TokenSearchDiscoveryControllerStateChangeEvent;\n\n/**\n * All events that {@link TokenSearchDiscoveryController} subscribes to internally.\n */\ntype AllowedEvents = never;\n\n/**\n * The messenger which is restricted to actions and events accessed by\n * {@link TokenSearchDiscoveryController}.\n */\nexport type TokenSearchDiscoveryControllerMessenger =\n RestrictedControllerMessenger<\n typeof controllerName,\n TokenSearchDiscoveryControllerActions | AllowedActions,\n TokenSearchDiscoveryControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n >;\n\n/**\n * Constructs the default {@link TokenSearchDiscoveryController} state. This allows\n * consumers to provide a partial state object when initializing the controller\n * and also helps in constructing complete state objects for this controller in\n * tests.\n *\n * @returns The default {@link TokenSearchDiscoveryController} state.\n */\nexport function getDefaultTokenSearchDiscoveryControllerState(): TokenSearchDiscoveryControllerState {\n return {\n recentSearches: [],\n lastSearchTimestamp: null,\n };\n}\n\n/**\n * The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.\n * It fetches token search results from the portfolio API.\n */\nexport class TokenSearchDiscoveryController extends BaseController<\n typeof controllerName,\n TokenSearchDiscoveryControllerState,\n TokenSearchDiscoveryControllerMessenger\n> {\n readonly #tokenSearchService: AbstractTokenSearchApiService;\n\n constructor({\n tokenSearchService,\n state = {},\n messenger,\n }: {\n tokenSearchService: AbstractTokenSearchApiService;\n state?: Partial<TokenSearchDiscoveryControllerState>;\n messenger: TokenSearchDiscoveryControllerMessenger;\n }) {\n super({\n name: controllerName,\n metadata: tokenSearchDiscoveryControllerMetadata,\n messenger,\n state: { ...getDefaultTokenSearchDiscoveryControllerState(), ...state },\n });\n\n this.#tokenSearchService = tokenSearchService;\n }\n\n async searchTokens(\n tokenSearchParams: TokenSearchParams,\n ): Promise<TokenSearchResponseItem[]> {\n const results =\n await this.#tokenSearchService.searchTokens(tokenSearchParams);\n\n this.update((state) => {\n state.recentSearches = results;\n state.lastSearchTimestamp = Date.now();\n });\n\n return results;\n }\n}\n"]}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { ControllerGetStateAction, ControllerStateChangeEvent,
|
|
1
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedControllerMessenger } from "@metamask/base-controller";
|
|
2
2
|
import { BaseController } from "@metamask/base-controller";
|
|
3
|
-
import type { AbstractTokenDiscoveryApiService } from "./token-discovery-api-service/abstract-token-discovery-api-service.cjs";
|
|
4
3
|
import type { AbstractTokenSearchApiService } from "./token-search-api-service/abstract-token-search-api-service.cjs";
|
|
5
|
-
import type { TokenSearchParams, TokenSearchResponseItem
|
|
4
|
+
import type { TokenSearchParams, TokenSearchResponseItem } from "./types.cjs";
|
|
6
5
|
declare const controllerName = "TokenSearchDiscoveryController";
|
|
7
6
|
export type TokenSearchDiscoveryControllerState = {
|
|
8
7
|
recentSearches: TokenSearchResponseItem[];
|
|
@@ -40,7 +39,7 @@ type AllowedEvents = never;
|
|
|
40
39
|
* The messenger which is restricted to actions and events accessed by
|
|
41
40
|
* {@link TokenSearchDiscoveryController}.
|
|
42
41
|
*/
|
|
43
|
-
export type TokenSearchDiscoveryControllerMessenger =
|
|
42
|
+
export type TokenSearchDiscoveryControllerMessenger = RestrictedControllerMessenger<typeof controllerName, TokenSearchDiscoveryControllerActions | AllowedActions, TokenSearchDiscoveryControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
44
43
|
/**
|
|
45
44
|
* Constructs the default {@link TokenSearchDiscoveryController} state. This allows
|
|
46
45
|
* consumers to provide a partial state object when initializing the controller
|
|
@@ -52,18 +51,16 @@ export type TokenSearchDiscoveryControllerMessenger = RestrictedMessenger<typeof
|
|
|
52
51
|
export declare function getDefaultTokenSearchDiscoveryControllerState(): TokenSearchDiscoveryControllerState;
|
|
53
52
|
/**
|
|
54
53
|
* The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.
|
|
55
|
-
* It fetches token search results
|
|
54
|
+
* It fetches token search results from the portfolio API.
|
|
56
55
|
*/
|
|
57
56
|
export declare class TokenSearchDiscoveryController extends BaseController<typeof controllerName, TokenSearchDiscoveryControllerState, TokenSearchDiscoveryControllerMessenger> {
|
|
58
57
|
#private;
|
|
59
|
-
constructor({ tokenSearchService,
|
|
58
|
+
constructor({ tokenSearchService, state, messenger, }: {
|
|
60
59
|
tokenSearchService: AbstractTokenSearchApiService;
|
|
61
|
-
tokenDiscoveryService: AbstractTokenDiscoveryApiService;
|
|
62
60
|
state?: Partial<TokenSearchDiscoveryControllerState>;
|
|
63
61
|
messenger: TokenSearchDiscoveryControllerMessenger;
|
|
64
62
|
});
|
|
65
63
|
searchTokens(tokenSearchParams: TokenSearchParams): Promise<TokenSearchResponseItem[]>;
|
|
66
|
-
getTrendingTokens(params: TrendingTokensParams): Promise<TokenTrendingResponseItem[]>;
|
|
67
64
|
}
|
|
68
65
|
export {};
|
|
69
66
|
//# sourceMappingURL=token-search-discovery-controller.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-discovery-controller.d.cts","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"token-search-discovery-controller.d.cts","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC9B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,6BAA6B,EAAE,yEAAqE;AAClH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAgB;AAI1E,QAAA,MAAM,cAAc,mCAAmC,CAAC;AAIxD,MAAM,MAAM,mCAAmC,GAAG;IAChD,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AASF;;;GAGG;AACH,MAAM,MAAM,4CAA4C,GACtD,wBAAwB,CACtB,OAAO,cAAc,EACrB,mCAAmC,CACpC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,qCAAqC,GAC/C,4CAA4C,CAAC;AAE/C;;GAEG;AACH,KAAK,cAAc,GAAG,KAAK,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,8CAA8C,GACxD,0BAA0B,CACxB,OAAO,cAAc,EACrB,mCAAmC,CACpC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,oCAAoC,GAC9C,8CAA8C,CAAC;AAEjD;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,uCAAuC,GACjD,6BAA6B,CAC3B,OAAO,cAAc,EACrB,qCAAqC,GAAG,cAAc,EACtD,oCAAoC,GAAG,aAAa,EACpD,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,6CAA6C,IAAI,mCAAmC,CAKnG;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,cAAc,CAChE,OAAO,cAAc,EACrB,mCAAmC,EACnC,uCAAuC,CACxC;;gBAGa,EACV,kBAAkB,EAClB,KAAU,EACV,SAAS,GACV,EAAE;QACD,kBAAkB,EAAE,6BAA6B,CAAC;QAClD,KAAK,CAAC,EAAE,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACrD,SAAS,EAAE,uCAAuC,CAAC;KACpD;IAWK,YAAY,CAChB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAWtC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import type { ControllerGetStateAction, ControllerStateChangeEvent,
|
|
1
|
+
import type { ControllerGetStateAction, ControllerStateChangeEvent, RestrictedControllerMessenger } from "@metamask/base-controller";
|
|
2
2
|
import { BaseController } from "@metamask/base-controller";
|
|
3
|
-
import type { AbstractTokenDiscoveryApiService } from "./token-discovery-api-service/abstract-token-discovery-api-service.mjs";
|
|
4
3
|
import type { AbstractTokenSearchApiService } from "./token-search-api-service/abstract-token-search-api-service.mjs";
|
|
5
|
-
import type { TokenSearchParams, TokenSearchResponseItem
|
|
4
|
+
import type { TokenSearchParams, TokenSearchResponseItem } from "./types.mjs";
|
|
6
5
|
declare const controllerName = "TokenSearchDiscoveryController";
|
|
7
6
|
export type TokenSearchDiscoveryControllerState = {
|
|
8
7
|
recentSearches: TokenSearchResponseItem[];
|
|
@@ -40,7 +39,7 @@ type AllowedEvents = never;
|
|
|
40
39
|
* The messenger which is restricted to actions and events accessed by
|
|
41
40
|
* {@link TokenSearchDiscoveryController}.
|
|
42
41
|
*/
|
|
43
|
-
export type TokenSearchDiscoveryControllerMessenger =
|
|
42
|
+
export type TokenSearchDiscoveryControllerMessenger = RestrictedControllerMessenger<typeof controllerName, TokenSearchDiscoveryControllerActions | AllowedActions, TokenSearchDiscoveryControllerEvents | AllowedEvents, AllowedActions['type'], AllowedEvents['type']>;
|
|
44
43
|
/**
|
|
45
44
|
* Constructs the default {@link TokenSearchDiscoveryController} state. This allows
|
|
46
45
|
* consumers to provide a partial state object when initializing the controller
|
|
@@ -52,18 +51,16 @@ export type TokenSearchDiscoveryControllerMessenger = RestrictedMessenger<typeof
|
|
|
52
51
|
export declare function getDefaultTokenSearchDiscoveryControllerState(): TokenSearchDiscoveryControllerState;
|
|
53
52
|
/**
|
|
54
53
|
* The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.
|
|
55
|
-
* It fetches token search results
|
|
54
|
+
* It fetches token search results from the portfolio API.
|
|
56
55
|
*/
|
|
57
56
|
export declare class TokenSearchDiscoveryController extends BaseController<typeof controllerName, TokenSearchDiscoveryControllerState, TokenSearchDiscoveryControllerMessenger> {
|
|
58
57
|
#private;
|
|
59
|
-
constructor({ tokenSearchService,
|
|
58
|
+
constructor({ tokenSearchService, state, messenger, }: {
|
|
60
59
|
tokenSearchService: AbstractTokenSearchApiService;
|
|
61
|
-
tokenDiscoveryService: AbstractTokenDiscoveryApiService;
|
|
62
60
|
state?: Partial<TokenSearchDiscoveryControllerState>;
|
|
63
61
|
messenger: TokenSearchDiscoveryControllerMessenger;
|
|
64
62
|
});
|
|
65
63
|
searchTokens(tokenSearchParams: TokenSearchParams): Promise<TokenSearchResponseItem[]>;
|
|
66
|
-
getTrendingTokens(params: TrendingTokensParams): Promise<TokenTrendingResponseItem[]>;
|
|
67
64
|
}
|
|
68
65
|
export {};
|
|
69
66
|
//# sourceMappingURL=token-search-discovery-controller.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-discovery-controller.d.mts","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,
|
|
1
|
+
{"version":3,"file":"token-search-discovery-controller.d.mts","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,6BAA6B,EAC9B,kCAAkC;AACnC,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAE3D,OAAO,KAAK,EAAE,6BAA6B,EAAE,yEAAqE;AAClH,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,oBAAgB;AAI1E,QAAA,MAAM,cAAc,mCAAmC,CAAC;AAIxD,MAAM,MAAM,mCAAmC,GAAG;IAChD,cAAc,EAAE,uBAAuB,EAAE,CAAC;IAC1C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AASF;;;GAGG;AACH,MAAM,MAAM,4CAA4C,GACtD,wBAAwB,CACtB,OAAO,cAAc,EACrB,mCAAmC,CACpC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,qCAAqC,GAC/C,4CAA4C,CAAC;AAE/C;;GAEG;AACH,KAAK,cAAc,GAAG,KAAK,CAAC;AAE5B;;;GAGG;AACH,MAAM,MAAM,8CAA8C,GACxD,0BAA0B,CACxB,OAAO,cAAc,EACrB,mCAAmC,CACpC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,oCAAoC,GAC9C,8CAA8C,CAAC;AAEjD;;GAEG;AACH,KAAK,aAAa,GAAG,KAAK,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,uCAAuC,GACjD,6BAA6B,CAC3B,OAAO,cAAc,EACrB,qCAAqC,GAAG,cAAc,EACtD,oCAAoC,GAAG,aAAa,EACpD,cAAc,CAAC,MAAM,CAAC,EACtB,aAAa,CAAC,MAAM,CAAC,CACtB,CAAC;AAEJ;;;;;;;GAOG;AACH,wBAAgB,6CAA6C,IAAI,mCAAmC,CAKnG;AAED;;;GAGG;AACH,qBAAa,8BAA+B,SAAQ,cAAc,CAChE,OAAO,cAAc,EACrB,mCAAmC,EACnC,uCAAuC,CACxC;;gBAGa,EACV,kBAAkB,EAClB,KAAU,EACV,SAAS,GACV,EAAE;QACD,kBAAkB,EAAE,6BAA6B,CAAC;QAClD,KAAK,CAAC,EAAE,OAAO,CAAC,mCAAmC,CAAC,CAAC;QACrD,SAAS,EAAE,uCAAuC,CAAC;KACpD;IAWK,YAAY,CAChB,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,uBAAuB,EAAE,CAAC;CAWtC"}
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _TokenSearchDiscoveryController_tokenSearchService
|
|
12
|
+
var _TokenSearchDiscoveryController_tokenSearchService;
|
|
13
13
|
import { BaseController } from "@metamask/base-controller";
|
|
14
14
|
// === GENERAL ===
|
|
15
15
|
const controllerName = 'TokenSearchDiscoveryController';
|
|
@@ -33,10 +33,10 @@ export function getDefaultTokenSearchDiscoveryControllerState() {
|
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.
|
|
36
|
-
* It fetches token search results
|
|
36
|
+
* It fetches token search results from the portfolio API.
|
|
37
37
|
*/
|
|
38
38
|
export class TokenSearchDiscoveryController extends BaseController {
|
|
39
|
-
constructor({ tokenSearchService,
|
|
39
|
+
constructor({ tokenSearchService, state = {}, messenger, }) {
|
|
40
40
|
super({
|
|
41
41
|
name: controllerName,
|
|
42
42
|
metadata: tokenSearchDiscoveryControllerMetadata,
|
|
@@ -44,9 +44,7 @@ export class TokenSearchDiscoveryController extends BaseController {
|
|
|
44
44
|
state: { ...getDefaultTokenSearchDiscoveryControllerState(), ...state },
|
|
45
45
|
});
|
|
46
46
|
_TokenSearchDiscoveryController_tokenSearchService.set(this, void 0);
|
|
47
|
-
_TokenSearchDiscoveryController_tokenDiscoveryService.set(this, void 0);
|
|
48
47
|
__classPrivateFieldSet(this, _TokenSearchDiscoveryController_tokenSearchService, tokenSearchService, "f");
|
|
49
|
-
__classPrivateFieldSet(this, _TokenSearchDiscoveryController_tokenDiscoveryService, tokenDiscoveryService, "f");
|
|
50
48
|
}
|
|
51
49
|
async searchTokens(tokenSearchParams) {
|
|
52
50
|
const results = await __classPrivateFieldGet(this, _TokenSearchDiscoveryController_tokenSearchService, "f").searchTokens(tokenSearchParams);
|
|
@@ -56,9 +54,6 @@ export class TokenSearchDiscoveryController extends BaseController {
|
|
|
56
54
|
});
|
|
57
55
|
return results;
|
|
58
56
|
}
|
|
59
|
-
async getTrendingTokens(params) {
|
|
60
|
-
return __classPrivateFieldGet(this, _TokenSearchDiscoveryController_tokenDiscoveryService, "f").getTrendingTokensByChains(params);
|
|
61
|
-
}
|
|
62
57
|
}
|
|
63
|
-
_TokenSearchDiscoveryController_tokenSearchService = new WeakMap()
|
|
58
|
+
_TokenSearchDiscoveryController_tokenSearchService = new WeakMap();
|
|
64
59
|
//# sourceMappingURL=token-search-discovery-controller.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-search-discovery-controller.mjs","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,OAAO,EAAE,cAAc,EAAE,kCAAkC;
|
|
1
|
+
{"version":3,"file":"token-search-discovery-controller.mjs","sourceRoot":"","sources":["../src/token-search-discovery-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAKA,OAAO,EAAE,cAAc,EAAE,kCAAkC;AAK3D,kBAAkB;AAElB,MAAM,cAAc,GAAG,gCAAgC,CAAC;AASxD,MAAM,sCAAsC,GAAG;IAC7C,cAAc,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACnD,mBAAmB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;CAChD,CAAC;AA6DX;;;;;;;GAOG;AACH,MAAM,UAAU,6CAA6C;IAC3D,OAAO;QACL,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,IAAI;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,8BAA+B,SAAQ,cAInD;IAGC,YAAY,EACV,kBAAkB,EAClB,KAAK,GAAG,EAAE,EACV,SAAS,GAKV;QACC,KAAK,CAAC;YACJ,IAAI,EAAE,cAAc;YACpB,QAAQ,EAAE,sCAAsC;YAChD,SAAS;YACT,KAAK,EAAE,EAAE,GAAG,6CAA6C,EAAE,EAAE,GAAG,KAAK,EAAE;SACxE,CAAC,CAAC;QAhBI,qEAAmD;QAkB1D,uBAAA,IAAI,sDAAuB,kBAAkB,MAAA,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,iBAAoC;QAEpC,MAAM,OAAO,GACX,MAAM,uBAAA,IAAI,0DAAoB,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEjE,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YACpB,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC;YAC/B,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["import type {\n ControllerGetStateAction,\n ControllerStateChangeEvent,\n RestrictedControllerMessenger,\n} from '@metamask/base-controller';\nimport { BaseController } from '@metamask/base-controller';\n\nimport type { AbstractTokenSearchApiService } from './token-search-api-service/abstract-token-search-api-service';\nimport type { TokenSearchParams, TokenSearchResponseItem } from './types';\n\n// === GENERAL ===\n\nconst controllerName = 'TokenSearchDiscoveryController';\n\n// === STATE ===\n\nexport type TokenSearchDiscoveryControllerState = {\n recentSearches: TokenSearchResponseItem[];\n lastSearchTimestamp: number | null;\n};\n\nconst tokenSearchDiscoveryControllerMetadata = {\n recentSearches: { persist: true, anonymous: false },\n lastSearchTimestamp: { persist: true, anonymous: false },\n} as const;\n\n// === MESSENGER ===\n\n/**\n * The action which can be used to retrieve the state of the\n * {@link TokenSearchDiscoveryController}.\n */\nexport type TokenSearchDiscoveryControllerGetStateAction =\n ControllerGetStateAction<\n typeof controllerName,\n TokenSearchDiscoveryControllerState\n >;\n\n/**\n * All actions that {@link TokenSearchDiscoveryController} registers, to be\n * called externally.\n */\nexport type TokenSearchDiscoveryControllerActions =\n TokenSearchDiscoveryControllerGetStateAction;\n\n/**\n * All actions that {@link TokenSearchDiscoveryController} calls internally.\n */\ntype AllowedActions = never;\n\n/**\n * The event that {@link TokenSearchDiscoveryController} publishes when updating\n * state.\n */\nexport type TokenSearchDiscoveryControllerStateChangeEvent =\n ControllerStateChangeEvent<\n typeof controllerName,\n TokenSearchDiscoveryControllerState\n >;\n\n/**\n * All events that {@link TokenSearchDiscoveryController} publishes, to be\n * subscribed to externally.\n */\nexport type TokenSearchDiscoveryControllerEvents =\n TokenSearchDiscoveryControllerStateChangeEvent;\n\n/**\n * All events that {@link TokenSearchDiscoveryController} subscribes to internally.\n */\ntype AllowedEvents = never;\n\n/**\n * The messenger which is restricted to actions and events accessed by\n * {@link TokenSearchDiscoveryController}.\n */\nexport type TokenSearchDiscoveryControllerMessenger =\n RestrictedControllerMessenger<\n typeof controllerName,\n TokenSearchDiscoveryControllerActions | AllowedActions,\n TokenSearchDiscoveryControllerEvents | AllowedEvents,\n AllowedActions['type'],\n AllowedEvents['type']\n >;\n\n/**\n * Constructs the default {@link TokenSearchDiscoveryController} state. This allows\n * consumers to provide a partial state object when initializing the controller\n * and also helps in constructing complete state objects for this controller in\n * tests.\n *\n * @returns The default {@link TokenSearchDiscoveryController} state.\n */\nexport function getDefaultTokenSearchDiscoveryControllerState(): TokenSearchDiscoveryControllerState {\n return {\n recentSearches: [],\n lastSearchTimestamp: null,\n };\n}\n\n/**\n * The TokenSearchDiscoveryController manages the retrieval of token search results and token discovery.\n * It fetches token search results from the portfolio API.\n */\nexport class TokenSearchDiscoveryController extends BaseController<\n typeof controllerName,\n TokenSearchDiscoveryControllerState,\n TokenSearchDiscoveryControllerMessenger\n> {\n readonly #tokenSearchService: AbstractTokenSearchApiService;\n\n constructor({\n tokenSearchService,\n state = {},\n messenger,\n }: {\n tokenSearchService: AbstractTokenSearchApiService;\n state?: Partial<TokenSearchDiscoveryControllerState>;\n messenger: TokenSearchDiscoveryControllerMessenger;\n }) {\n super({\n name: controllerName,\n metadata: tokenSearchDiscoveryControllerMetadata,\n messenger,\n state: { ...getDefaultTokenSearchDiscoveryControllerState(), ...state },\n });\n\n this.#tokenSearchService = tokenSearchService;\n }\n\n async searchTokens(\n tokenSearchParams: TokenSearchParams,\n ): Promise<TokenSearchResponseItem[]> {\n const results =\n await this.#tokenSearchService.searchTokens(tokenSearchParams);\n\n this.update((state) => {\n state.recentSearches = results;\n state.lastSearchTimestamp = Date.now();\n });\n\n return results;\n }\n}\n"]}
|
package/dist/types.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TokenSearchParams = {\n chains?: string[];\n
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TokenSearchParams = {\n chains?: string[];\n name?: string;\n limit?: string;\n};\n\nexport type TokenSearchResponseItem = {\n tokenAddress: string;\n chainId: string;\n name: string;\n symbol: string;\n usdPrice: number;\n usdPricePercentChange: {\n oneDay: number;\n };\n};\n"]}
|
package/dist/types.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type TokenSearchParams = {
|
|
2
2
|
chains?: string[];
|
|
3
|
-
|
|
3
|
+
name?: string;
|
|
4
4
|
limit?: string;
|
|
5
5
|
};
|
|
6
6
|
export type TokenSearchResponseItem = {
|
|
@@ -12,60 +12,5 @@ export type TokenSearchResponseItem = {
|
|
|
12
12
|
usdPricePercentChange: {
|
|
13
13
|
oneDay: number;
|
|
14
14
|
};
|
|
15
|
-
logoUrl?: string;
|
|
16
|
-
};
|
|
17
|
-
export type TokenTrendingResponseItem = {
|
|
18
|
-
chain_id: string;
|
|
19
|
-
token_address: string;
|
|
20
|
-
token_logo: string;
|
|
21
|
-
token_name: string;
|
|
22
|
-
token_symbol: string;
|
|
23
|
-
price_usd: number;
|
|
24
|
-
token_age_in_days: number;
|
|
25
|
-
on_chain_strength_index: number;
|
|
26
|
-
security_score: number;
|
|
27
|
-
market_cap: number;
|
|
28
|
-
fully_diluted_valuation: number;
|
|
29
|
-
twitter_followers: number;
|
|
30
|
-
holders_change: {
|
|
31
|
-
'1h': number | null;
|
|
32
|
-
'1d': number | null;
|
|
33
|
-
'1w': number | null;
|
|
34
|
-
'1M': number | null;
|
|
35
|
-
};
|
|
36
|
-
liquidity_change_usd: {
|
|
37
|
-
'1h': number | null;
|
|
38
|
-
'1d': number | null;
|
|
39
|
-
'1w': number | null;
|
|
40
|
-
'1M': number | null;
|
|
41
|
-
};
|
|
42
|
-
experienced_net_buyers_change: {
|
|
43
|
-
'1h': number | null;
|
|
44
|
-
'1d': number | null;
|
|
45
|
-
'1w': number | null;
|
|
46
|
-
'1M': number | null;
|
|
47
|
-
};
|
|
48
|
-
volume_change_usd: {
|
|
49
|
-
'1h': number | null;
|
|
50
|
-
'1d': number | null;
|
|
51
|
-
'1w': number | null;
|
|
52
|
-
'1M': number | null;
|
|
53
|
-
};
|
|
54
|
-
net_volume_change_usd: {
|
|
55
|
-
'1h': number | null;
|
|
56
|
-
'1d': number | null;
|
|
57
|
-
'1w': number | null;
|
|
58
|
-
'1M': number | null;
|
|
59
|
-
};
|
|
60
|
-
price_percent_change_usd: {
|
|
61
|
-
'1h': number | null;
|
|
62
|
-
'1d': number | null;
|
|
63
|
-
'1w': number | null;
|
|
64
|
-
'1M': number | null;
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
export type TrendingTokensParams = {
|
|
68
|
-
chains?: string[];
|
|
69
|
-
limit?: string;
|
|
70
15
|
};
|
|
71
16
|
//# sourceMappingURL=types.d.cts.map
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC"}
|
package/dist/types.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type TokenSearchParams = {
|
|
2
2
|
chains?: string[];
|
|
3
|
-
|
|
3
|
+
name?: string;
|
|
4
4
|
limit?: string;
|
|
5
5
|
};
|
|
6
6
|
export type TokenSearchResponseItem = {
|
|
@@ -12,60 +12,5 @@ export type TokenSearchResponseItem = {
|
|
|
12
12
|
usdPricePercentChange: {
|
|
13
13
|
oneDay: number;
|
|
14
14
|
};
|
|
15
|
-
logoUrl?: string;
|
|
16
|
-
};
|
|
17
|
-
export type TokenTrendingResponseItem = {
|
|
18
|
-
chain_id: string;
|
|
19
|
-
token_address: string;
|
|
20
|
-
token_logo: string;
|
|
21
|
-
token_name: string;
|
|
22
|
-
token_symbol: string;
|
|
23
|
-
price_usd: number;
|
|
24
|
-
token_age_in_days: number;
|
|
25
|
-
on_chain_strength_index: number;
|
|
26
|
-
security_score: number;
|
|
27
|
-
market_cap: number;
|
|
28
|
-
fully_diluted_valuation: number;
|
|
29
|
-
twitter_followers: number;
|
|
30
|
-
holders_change: {
|
|
31
|
-
'1h': number | null;
|
|
32
|
-
'1d': number | null;
|
|
33
|
-
'1w': number | null;
|
|
34
|
-
'1M': number | null;
|
|
35
|
-
};
|
|
36
|
-
liquidity_change_usd: {
|
|
37
|
-
'1h': number | null;
|
|
38
|
-
'1d': number | null;
|
|
39
|
-
'1w': number | null;
|
|
40
|
-
'1M': number | null;
|
|
41
|
-
};
|
|
42
|
-
experienced_net_buyers_change: {
|
|
43
|
-
'1h': number | null;
|
|
44
|
-
'1d': number | null;
|
|
45
|
-
'1w': number | null;
|
|
46
|
-
'1M': number | null;
|
|
47
|
-
};
|
|
48
|
-
volume_change_usd: {
|
|
49
|
-
'1h': number | null;
|
|
50
|
-
'1d': number | null;
|
|
51
|
-
'1w': number | null;
|
|
52
|
-
'1M': number | null;
|
|
53
|
-
};
|
|
54
|
-
net_volume_change_usd: {
|
|
55
|
-
'1h': number | null;
|
|
56
|
-
'1d': number | null;
|
|
57
|
-
'1w': number | null;
|
|
58
|
-
'1M': number | null;
|
|
59
|
-
};
|
|
60
|
-
price_percent_change_usd: {
|
|
61
|
-
'1h': number | null;
|
|
62
|
-
'1d': number | null;
|
|
63
|
-
'1w': number | null;
|
|
64
|
-
'1M': number | null;
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
export type TrendingTokensParams = {
|
|
68
|
-
chains?: string[];
|
|
69
|
-
limit?: string;
|
|
70
15
|
};
|
|
71
16
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC"}
|
package/dist/types.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TokenSearchParams = {\n chains?: string[];\n
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"","sourcesContent":["export type TokenSearchParams = {\n chains?: string[];\n name?: string;\n limit?: string;\n};\n\nexport type TokenSearchResponseItem = {\n tokenAddress: string;\n chainId: string;\n name: string;\n symbol: string;\n usdPrice: number;\n usdPricePercentChange: {\n oneDay: number;\n };\n};\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/token-search-discovery-controller",
|
|
3
|
-
"version": "1.0.0-preview-
|
|
3
|
+
"version": "1.0.0-preview-4c4eb52a",
|
|
4
4
|
"description": "Manages token search and discovery through the Portfolio API",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"MetaMask",
|
|
@@ -48,14 +48,13 @@
|
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@metamask/base-controller": "^7.1.1",
|
|
51
|
-
"@metamask/utils": "^11.1
|
|
51
|
+
"@metamask/utils": "^11.0.1"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@metamask/auto-changelog": "^3.4.4",
|
|
55
55
|
"@types/jest": "^27.4.1",
|
|
56
56
|
"deepmerge": "^4.2.2",
|
|
57
57
|
"jest": "^27.5.1",
|
|
58
|
-
"nock": "^13.3.1",
|
|
59
58
|
"ts-jest": "^27.1.4",
|
|
60
59
|
"typedoc": "^0.24.8",
|
|
61
60
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
package/dist/test/constants.cjs
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TEST_API_URLS = void 0;
|
|
4
|
-
exports.TEST_API_URLS = {
|
|
5
|
-
BASE_URL: 'https://mock-api.test',
|
|
6
|
-
PORTFOLIO_API: 'https://mock-portfolio-api.test',
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../src/test/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG;IAC3B,QAAQ,EAAE,uBAAuB;IACjC,aAAa,EAAE,iCAAiC;CACxC,CAAC","sourcesContent":["export const TEST_API_URLS = {\n BASE_URL: 'https://mock-api.test',\n PORTFOLIO_API: 'https://mock-portfolio-api.test',\n} as const;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../src/test/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;CAGhB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/test/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa;;;CAGhB,CAAC"}
|
package/dist/test/constants.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/test/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,QAAQ,EAAE,uBAAuB;IACjC,aAAa,EAAE,iCAAiC;CACxC,CAAC","sourcesContent":["export const TEST_API_URLS = {\n BASE_URL: 'https://mock-api.test',\n PORTFOLIO_API: 'https://mock-portfolio-api.test',\n} as const;\n"]}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbstractTokenDiscoveryApiService = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Abstract class for fetching token discovery results.
|
|
6
|
-
*/
|
|
7
|
-
class AbstractTokenDiscoveryApiService {
|
|
8
|
-
}
|
|
9
|
-
exports.AbstractTokenDiscoveryApiService = AbstractTokenDiscoveryApiService;
|
|
10
|
-
//# sourceMappingURL=abstract-token-discovery-api-service.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-token-discovery-api-service.cjs","sourceRoot":"","sources":["../../src/token-discovery-api-service/abstract-token-discovery-api-service.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAsB,gCAAgC;CAWrD;AAXD,4EAWC","sourcesContent":["import type { TokenTrendingResponseItem } from '../types';\n\n/**\n * Abstract class for fetching token discovery results.\n */\nexport abstract class AbstractTokenDiscoveryApiService {\n /**\n * Fetches trending tokens by chains from the portfolio API.\n *\n * @param params - Optional parameters including chains and limit\n * @returns A promise resolving to an array of {@link TokenTrendingResponseItem}\n */\n abstract getTrendingTokensByChains(params: {\n chains?: string[];\n limit?: string;\n }): Promise<TokenTrendingResponseItem[]>;\n}\n"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { TokenTrendingResponseItem } from "../types.cjs";
|
|
2
|
-
/**
|
|
3
|
-
* Abstract class for fetching token discovery results.
|
|
4
|
-
*/
|
|
5
|
-
export declare abstract class AbstractTokenDiscoveryApiService {
|
|
6
|
-
/**
|
|
7
|
-
* Fetches trending tokens by chains from the portfolio API.
|
|
8
|
-
*
|
|
9
|
-
* @param params - Optional parameters including chains and limit
|
|
10
|
-
* @returns A promise resolving to an array of {@link TokenTrendingResponseItem}
|
|
11
|
-
*/
|
|
12
|
-
abstract getTrendingTokensByChains(params: {
|
|
13
|
-
chains?: string[];
|
|
14
|
-
limit?: string;
|
|
15
|
-
}): Promise<TokenTrendingResponseItem[]>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=abstract-token-discovery-api-service.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-token-discovery-api-service.d.cts","sourceRoot":"","sources":["../../src/token-discovery-api-service/abstract-token-discovery-api-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAiB;AAE1D;;GAEG;AACH,8BAAsB,gCAAgC;IACpD;;;;;OAKG;IACH,QAAQ,CAAC,yBAAyB,CAAC,MAAM,EAAE;QACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;CACzC"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { TokenTrendingResponseItem } from "../types.mjs";
|
|
2
|
-
/**
|
|
3
|
-
* Abstract class for fetching token discovery results.
|
|
4
|
-
*/
|
|
5
|
-
export declare abstract class AbstractTokenDiscoveryApiService {
|
|
6
|
-
/**
|
|
7
|
-
* Fetches trending tokens by chains from the portfolio API.
|
|
8
|
-
*
|
|
9
|
-
* @param params - Optional parameters including chains and limit
|
|
10
|
-
* @returns A promise resolving to an array of {@link TokenTrendingResponseItem}
|
|
11
|
-
*/
|
|
12
|
-
abstract getTrendingTokensByChains(params: {
|
|
13
|
-
chains?: string[];
|
|
14
|
-
limit?: string;
|
|
15
|
-
}): Promise<TokenTrendingResponseItem[]>;
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=abstract-token-discovery-api-service.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-token-discovery-api-service.d.mts","sourceRoot":"","sources":["../../src/token-discovery-api-service/abstract-token-discovery-api-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,qBAAiB;AAE1D;;GAEG;AACH,8BAAsB,gCAAgC;IACpD;;;;;OAKG;IACH,QAAQ,CAAC,yBAAyB,CAAC,MAAM,EAAE;QACzC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,yBAAyB,EAAE,CAAC;CACzC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-token-discovery-api-service.mjs","sourceRoot":"","sources":["../../src/token-discovery-api-service/abstract-token-discovery-api-service.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAgB,gCAAgC;CAWrD","sourcesContent":["import type { TokenTrendingResponseItem } from '../types';\n\n/**\n * Abstract class for fetching token discovery results.\n */\nexport abstract class AbstractTokenDiscoveryApiService {\n /**\n * Fetches trending tokens by chains from the portfolio API.\n *\n * @param params - Optional parameters including chains and limit\n * @returns A promise resolving to an array of {@link TokenTrendingResponseItem}\n */\n abstract getTrendingTokensByChains(params: {\n chains?: string[];\n limit?: string;\n }): Promise<TokenTrendingResponseItem[]>;\n}\n"]}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
3
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
4
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
5
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
6
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
7
|
-
};
|
|
8
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
9
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
10
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
11
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
12
|
-
};
|
|
13
|
-
var _TokenDiscoveryApiService_baseUrl;
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.TokenDiscoveryApiService = void 0;
|
|
16
|
-
const abstract_token_discovery_api_service_1 = require("./abstract-token-discovery-api-service.cjs");
|
|
17
|
-
class TokenDiscoveryApiService extends abstract_token_discovery_api_service_1.AbstractTokenDiscoveryApiService {
|
|
18
|
-
constructor(baseUrl) {
|
|
19
|
-
super();
|
|
20
|
-
_TokenDiscoveryApiService_baseUrl.set(this, void 0);
|
|
21
|
-
if (!baseUrl) {
|
|
22
|
-
throw new Error('Portfolio API URL is not set');
|
|
23
|
-
}
|
|
24
|
-
__classPrivateFieldSet(this, _TokenDiscoveryApiService_baseUrl, baseUrl, "f");
|
|
25
|
-
}
|
|
26
|
-
async getTrendingTokensByChains(trendingTokensParams) {
|
|
27
|
-
const url = new URL('/tokens-search/trending-by-chains', __classPrivateFieldGet(this, _TokenDiscoveryApiService_baseUrl, "f"));
|
|
28
|
-
if (trendingTokensParams.chains && trendingTokensParams.chains.length > 0) {
|
|
29
|
-
url.searchParams.append('chains', trendingTokensParams.chains.join());
|
|
30
|
-
}
|
|
31
|
-
if (trendingTokensParams.limit) {
|
|
32
|
-
url.searchParams.append('limit', trendingTokensParams.limit);
|
|
33
|
-
}
|
|
34
|
-
const response = await fetch(url, {
|
|
35
|
-
method: 'GET',
|
|
36
|
-
headers: {
|
|
37
|
-
'Content-Type': 'application/json',
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
if (!response.ok) {
|
|
41
|
-
throw new Error(`Portfolio API request failed with status: ${response.status}`);
|
|
42
|
-
}
|
|
43
|
-
return response.json();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.TokenDiscoveryApiService = TokenDiscoveryApiService;
|
|
47
|
-
_TokenDiscoveryApiService_baseUrl = new WeakMap();
|
|
48
|
-
//# sourceMappingURL=token-discovery-api-service.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-discovery-api-service.cjs","sourceRoot":"","sources":["../../src/token-discovery-api-service/token-discovery-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,qGAA0F;AAG1F,MAAa,wBAAyB,SAAQ,uEAAgC;IAG5E,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,oDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,qCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,oBAA0C;QAE1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mCAAmC,EAAE,uBAAA,IAAI,yCAAS,CAAC,CAAC;QAExE,IAAI,oBAAoB,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACvE;QACD,IAAI,oBAAoB,CAAC,KAAK,EAAE;YAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAC9D;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,EAAE,CAC/D,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF;AAtCD,4DAsCC","sourcesContent":["import { AbstractTokenDiscoveryApiService } from './abstract-token-discovery-api-service';\nimport type { TokenTrendingResponseItem, TrendingTokensParams } from '../types';\n\nexport class TokenDiscoveryApiService extends AbstractTokenDiscoveryApiService {\n readonly #baseUrl: string;\n\n constructor(baseUrl: string) {\n super();\n if (!baseUrl) {\n throw new Error('Portfolio API URL is not set');\n }\n this.#baseUrl = baseUrl;\n }\n\n async getTrendingTokensByChains(\n trendingTokensParams: TrendingTokensParams,\n ): Promise<TokenTrendingResponseItem[]> {\n const url = new URL('/tokens-search/trending-by-chains', this.#baseUrl);\n\n if (trendingTokensParams.chains && trendingTokensParams.chains.length > 0) {\n url.searchParams.append('chains', trendingTokensParams.chains.join());\n }\n if (trendingTokensParams.limit) {\n url.searchParams.append('limit', trendingTokensParams.limit);\n }\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Portfolio API request failed with status: ${response.status}`,\n );\n }\n\n return response.json();\n }\n}\n"]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { AbstractTokenDiscoveryApiService } from "./abstract-token-discovery-api-service.cjs";
|
|
2
|
-
import type { TokenTrendingResponseItem, TrendingTokensParams } from "../types.cjs";
|
|
3
|
-
export declare class TokenDiscoveryApiService extends AbstractTokenDiscoveryApiService {
|
|
4
|
-
#private;
|
|
5
|
-
constructor(baseUrl: string);
|
|
6
|
-
getTrendingTokensByChains(trendingTokensParams: TrendingTokensParams): Promise<TokenTrendingResponseItem[]>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=token-discovery-api-service.d.cts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-discovery-api-service.d.cts","sourceRoot":"","sources":["../../src/token-discovery-api-service/token-discovery-api-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,mDAA+C;AAC1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAiB;AAEhF,qBAAa,wBAAyB,SAAQ,gCAAgC;;gBAGhE,OAAO,EAAE,MAAM;IAQrB,yBAAyB,CAC7B,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAyBxC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { AbstractTokenDiscoveryApiService } from "./abstract-token-discovery-api-service.mjs";
|
|
2
|
-
import type { TokenTrendingResponseItem, TrendingTokensParams } from "../types.mjs";
|
|
3
|
-
export declare class TokenDiscoveryApiService extends AbstractTokenDiscoveryApiService {
|
|
4
|
-
#private;
|
|
5
|
-
constructor(baseUrl: string);
|
|
6
|
-
getTrendingTokensByChains(trendingTokensParams: TrendingTokensParams): Promise<TokenTrendingResponseItem[]>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=token-discovery-api-service.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-discovery-api-service.d.mts","sourceRoot":"","sources":["../../src/token-discovery-api-service/token-discovery-api-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,mDAA+C;AAC1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,qBAAiB;AAEhF,qBAAa,wBAAyB,SAAQ,gCAAgC;;gBAGhE,OAAO,EAAE,MAAM;IAQrB,yBAAyB,CAC7B,oBAAoB,EAAE,oBAAoB,GACzC,OAAO,CAAC,yBAAyB,EAAE,CAAC;CAyBxC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
9
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _TokenDiscoveryApiService_baseUrl;
|
|
13
|
-
import { AbstractTokenDiscoveryApiService } from "./abstract-token-discovery-api-service.mjs";
|
|
14
|
-
export class TokenDiscoveryApiService extends AbstractTokenDiscoveryApiService {
|
|
15
|
-
constructor(baseUrl) {
|
|
16
|
-
super();
|
|
17
|
-
_TokenDiscoveryApiService_baseUrl.set(this, void 0);
|
|
18
|
-
if (!baseUrl) {
|
|
19
|
-
throw new Error('Portfolio API URL is not set');
|
|
20
|
-
}
|
|
21
|
-
__classPrivateFieldSet(this, _TokenDiscoveryApiService_baseUrl, baseUrl, "f");
|
|
22
|
-
}
|
|
23
|
-
async getTrendingTokensByChains(trendingTokensParams) {
|
|
24
|
-
const url = new URL('/tokens-search/trending-by-chains', __classPrivateFieldGet(this, _TokenDiscoveryApiService_baseUrl, "f"));
|
|
25
|
-
if (trendingTokensParams.chains && trendingTokensParams.chains.length > 0) {
|
|
26
|
-
url.searchParams.append('chains', trendingTokensParams.chains.join());
|
|
27
|
-
}
|
|
28
|
-
if (trendingTokensParams.limit) {
|
|
29
|
-
url.searchParams.append('limit', trendingTokensParams.limit);
|
|
30
|
-
}
|
|
31
|
-
const response = await fetch(url, {
|
|
32
|
-
method: 'GET',
|
|
33
|
-
headers: {
|
|
34
|
-
'Content-Type': 'application/json',
|
|
35
|
-
},
|
|
36
|
-
});
|
|
37
|
-
if (!response.ok) {
|
|
38
|
-
throw new Error(`Portfolio API request failed with status: ${response.status}`);
|
|
39
|
-
}
|
|
40
|
-
return response.json();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
_TokenDiscoveryApiService_baseUrl = new WeakMap();
|
|
44
|
-
//# sourceMappingURL=token-discovery-api-service.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"token-discovery-api-service.mjs","sourceRoot":"","sources":["../../src/token-discovery-api-service/token-discovery-api-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,gCAAgC,EAAE,mDAA+C;AAG1F,MAAM,OAAO,wBAAyB,SAAQ,gCAAgC;IAG5E,YAAY,OAAe;QACzB,KAAK,EAAE,CAAC;QAHD,oDAAiB;QAIxB,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACjD;QACD,uBAAA,IAAI,qCAAY,OAAO,MAAA,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,yBAAyB,CAC7B,oBAA0C;QAE1C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,mCAAmC,EAAE,uBAAA,IAAI,yCAAS,CAAC,CAAC;QAExE,IAAI,oBAAoB,CAAC,MAAM,IAAI,oBAAoB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACzE,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;SACvE;QACD,IAAI,oBAAoB,CAAC,KAAK,EAAE;YAC9B,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;SAC9D;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;YAChB,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,EAAE,CAC/D,CAAC;SACH;QAED,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;CACF","sourcesContent":["import { AbstractTokenDiscoveryApiService } from './abstract-token-discovery-api-service';\nimport type { TokenTrendingResponseItem, TrendingTokensParams } from '../types';\n\nexport class TokenDiscoveryApiService extends AbstractTokenDiscoveryApiService {\n readonly #baseUrl: string;\n\n constructor(baseUrl: string) {\n super();\n if (!baseUrl) {\n throw new Error('Portfolio API URL is not set');\n }\n this.#baseUrl = baseUrl;\n }\n\n async getTrendingTokensByChains(\n trendingTokensParams: TrendingTokensParams,\n ): Promise<TokenTrendingResponseItem[]> {\n const url = new URL('/tokens-search/trending-by-chains', this.#baseUrl);\n\n if (trendingTokensParams.chains && trendingTokensParams.chains.length > 0) {\n url.searchParams.append('chains', trendingTokensParams.chains.join());\n }\n if (trendingTokensParams.limit) {\n url.searchParams.append('limit', trendingTokensParams.limit);\n }\n\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n throw new Error(\n `Portfolio API request failed with status: ${response.status}`,\n );\n }\n\n return response.json();\n }\n}\n"]}
|