@pipedream/coingecko 0.0.1 → 0.2.0

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.
@@ -0,0 +1,84 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-get-coin",
5
+ name: "Get Coin",
6
+ description: "Get current data for a coin by its ID, including price, market cap, volume, community data, and developer data. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/coins-id)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ coinId: {
17
+ propDefinition: [
18
+ app,
19
+ "coinId",
20
+ ],
21
+ },
22
+ localization: {
23
+ type: "boolean",
24
+ label: "Include Localization",
25
+ description: "Include all localized language data in the response.",
26
+ optional: true,
27
+ },
28
+ tickers: {
29
+ type: "boolean",
30
+ label: "Include Tickers",
31
+ description: "Include ticker and exchange data in the response.",
32
+ optional: true,
33
+ },
34
+ marketData: {
35
+ type: "boolean",
36
+ label: "Include Market Data",
37
+ description: "Include market data (price, market cap, volume, etc.) in the response.",
38
+ optional: true,
39
+ },
40
+ communityData: {
41
+ type: "boolean",
42
+ label: "Include Community Data",
43
+ description: "Include community data (Reddit, Twitter, Telegram) in the response.",
44
+ optional: true,
45
+ },
46
+ developerData: {
47
+ type: "boolean",
48
+ label: "Include Developer Data",
49
+ description: "Include developer/GitHub data (forks, stars, commits) in the response.",
50
+ optional: true,
51
+ },
52
+ sparkline: {
53
+ type: "boolean",
54
+ label: "Include Sparkline",
55
+ description: "Include 7-day sparkline price data in the response.",
56
+ optional: true,
57
+ },
58
+ },
59
+ async run({ $ }) {
60
+ const {
61
+ coinId,
62
+ localization,
63
+ tickers,
64
+ marketData,
65
+ communityData,
66
+ developerData,
67
+ sparkline,
68
+ } = this;
69
+ const response = await this.app.getCoin({
70
+ $,
71
+ coinId,
72
+ params: {
73
+ localization,
74
+ tickers,
75
+ market_data: marketData,
76
+ community_data: communityData,
77
+ developer_data: developerData,
78
+ sparkline,
79
+ },
80
+ });
81
+ $.export("$summary", `Successfully retrieved data for ${response.name} (${response.symbol?.toUpperCase()})`);
82
+ return response;
83
+ },
84
+ };
@@ -0,0 +1,49 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-get-coin-history",
5
+ name: "Get Coin History",
6
+ description: "Get historical data (price, market cap, and volume) for a coin on a specific date. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/coins-id-history)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ coinId: {
17
+ propDefinition: [
18
+ app,
19
+ "coinId",
20
+ ],
21
+ },
22
+ date: {
23
+ type: "string",
24
+ label: "Date",
25
+ description: "The date to retrieve historical data for, in `dd-mm-yyyy` format (e.g. `30-12-2023`).",
26
+ },
27
+ localization: {
28
+ type: "boolean",
29
+ label: "Include Localization",
30
+ description: "Include localized language data in the response.",
31
+ optional: true,
32
+ },
33
+ },
34
+ async run({ $ }) {
35
+ const {
36
+ coinId, date, localization,
37
+ } = this;
38
+ const response = await this.app.getCoinHistory({
39
+ $,
40
+ coinId,
41
+ params: {
42
+ date,
43
+ localization,
44
+ },
45
+ });
46
+ $.export("$summary", `Successfully retrieved historical data for ${coinId} on ${date}`);
47
+ return response;
48
+ },
49
+ };
@@ -0,0 +1,95 @@
1
+ import app from "../../coingecko.app.mjs";
2
+ import { parseStringList } from "../../common/utils.mjs";
3
+
4
+ export default {
5
+ key: "coingecko-get-coin-value",
6
+ name: "Get Coin Value",
7
+ description: "Get the current price of one or more cryptocurrencies in any supported currencies. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/simple-price)",
8
+ version: "0.0.1",
9
+ type: "action",
10
+ annotations: {
11
+ readOnlyHint: true,
12
+ destructiveHint: false,
13
+ openWorldHint: true,
14
+ },
15
+ props: {
16
+ app,
17
+ vsCurrencies: {
18
+ type: "string[]",
19
+ label: "Target Currencies",
20
+ description: "List of target currencies to convert to (e.g. `usd,eur,btc`).",
21
+ propDefinition: [
22
+ app,
23
+ "vsCurrency",
24
+ ],
25
+ },
26
+ ids: {
27
+ type: "string[]",
28
+ label: "Coin IDs",
29
+ description: "List of coin IDs (e.g. `bitcoin,ethereum`)",
30
+ optional: true,
31
+ propDefinition: [
32
+ app,
33
+ "coinId",
34
+ ],
35
+ },
36
+ includeMarketCap: {
37
+ type: "boolean",
38
+ label: "Include Market Cap",
39
+ description: "Include market cap data in the response.",
40
+ optional: true,
41
+ },
42
+ include24hrVol: {
43
+ type: "boolean",
44
+ label: "Include 24h Volume",
45
+ description: "Include 24-hour trading volume in the response.",
46
+ optional: true,
47
+ },
48
+ include24hrChange: {
49
+ type: "boolean",
50
+ label: "Include 24h Change",
51
+ description: "Include 24-hour price change percentage in the response.",
52
+ optional: true,
53
+ },
54
+ includeLastUpdatedAt: {
55
+ type: "boolean",
56
+ label: "Include Last Updated At",
57
+ description: "Include the last updated UNIX timestamp in the response.",
58
+ optional: true,
59
+ },
60
+ precision: {
61
+ type: "string",
62
+ label: "Precision",
63
+ description: "Decimal precision for price values. Use `full` for full precision or a number from `0` to `18`.",
64
+ optional: true,
65
+ },
66
+ },
67
+ async run({ $ }) {
68
+ const {
69
+ ids,
70
+ vsCurrencies,
71
+ includeMarketCap,
72
+ include24hrVol,
73
+ include24hrChange,
74
+ includeLastUpdatedAt,
75
+ precision,
76
+ } = this;
77
+ const response = await this.app.getCoinPrice({
78
+ $,
79
+ params: {
80
+ vs_currencies: parseStringList(vsCurrencies),
81
+ ids: parseStringList(ids),
82
+ include_market_cap: includeMarketCap,
83
+ include_24hr_vol: include24hrVol,
84
+ include_24hr_change: include24hrChange,
85
+ include_last_updated_at: includeLastUpdatedAt,
86
+ precision,
87
+ },
88
+ });
89
+ const coinCount = Object.keys(response).length;
90
+ $.export("$summary", `Successfully retrieved prices for ${coinCount} coin${coinCount === 1
91
+ ? ""
92
+ : "s"}`);
93
+ return response;
94
+ },
95
+ };
@@ -0,0 +1,24 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-get-exchange-rates",
5
+ name: "Get Exchange Rates",
6
+ description: "Get BTC-to-currency exchange rates for currencies recognized by CoinGecko. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/exchange-rates)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ },
17
+ async run({ $ }) {
18
+ const response = await this.app.getExchangeRates({
19
+ $,
20
+ });
21
+ $.export("$summary", `Successfully retrieved ${Object.keys(response.rates).length} exchange rates`);
22
+ return response;
23
+ },
24
+ };
@@ -0,0 +1,24 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-get-global-defi-market-overview",
5
+ name: "Get Global DeFi Market Overview",
6
+ description: "Get the current DeFi market data from the top 100 cryptocurrencies, including DeFi market cap, trading volume, and top coin dominance. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/global-defi)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ },
17
+ async run({ $ }) {
18
+ const response = await this.app.getGlobalDefiMarket({
19
+ $,
20
+ });
21
+ $.export("$summary", "Successfully retrieved global DeFi market overview");
22
+ return response;
23
+ },
24
+ };
@@ -0,0 +1,24 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-get-global-market",
5
+ name: "Get Global Market",
6
+ description: "Get global cryptocurrency market data including total market cap, total volume, market cap percentage, and more. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/crypto-global)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ },
17
+ async run({ $ }) {
18
+ const response = await this.app.getGlobalMarket({
19
+ $,
20
+ });
21
+ $.export("$summary", "Successfully retrieved global market data");
22
+ return response;
23
+ },
24
+ };
@@ -0,0 +1,88 @@
1
+ import app from "../../coingecko.app.mjs";
2
+ import { parseStringList } from "../../common/utils.mjs";
3
+
4
+ export default {
5
+ key: "coingecko-list-coin-tickers",
6
+ name: "List Coin Tickers",
7
+ description: "List trading tickers for a specified coin, including exchange info, price, volume, and trust score. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/coins-id-tickers)",
8
+ version: "0.0.1",
9
+ type: "action",
10
+ annotations: {
11
+ readOnlyHint: true,
12
+ destructiveHint: false,
13
+ openWorldHint: true,
14
+ },
15
+ props: {
16
+ app,
17
+ coinId: {
18
+ propDefinition: [
19
+ app,
20
+ "coinId",
21
+ ],
22
+ },
23
+ exchangeIds: {
24
+ type: "string[]",
25
+ label: "Exchange IDs",
26
+ description: "Filter tickers by exchange. Select one or more exchanges.",
27
+ optional: true,
28
+ propDefinition: [
29
+ app,
30
+ "exchangeId",
31
+ ],
32
+ },
33
+ includeExchangeLogo: {
34
+ type: "boolean",
35
+ label: "Include Exchange Logo",
36
+ description: "Include the exchange logo URL in the response.",
37
+ optional: true,
38
+ },
39
+ page: {
40
+ type: "integer",
41
+ label: "Page",
42
+ description: "Page number for paginated results.",
43
+ optional: true,
44
+ },
45
+ order: {
46
+ type: "string",
47
+ label: "Order",
48
+ description: "Sort order for tickers.",
49
+ optional: true,
50
+ options: [
51
+ "trust_score_desc",
52
+ "trust_score_asc",
53
+ "volume_desc",
54
+ "volume_asc",
55
+ ],
56
+ },
57
+ depth: {
58
+ type: "boolean",
59
+ label: "Include Depth",
60
+ description: "Include 2% orderbook depth (cost to move up/down) in the response.",
61
+ optional: true,
62
+ },
63
+ },
64
+ async run({ $ }) {
65
+ const {
66
+ coinId,
67
+ exchangeIds,
68
+ includeExchangeLogo,
69
+ page,
70
+ order,
71
+ depth,
72
+ } = this;
73
+ const response = await this.app.getCoinTickers({
74
+ $,
75
+ coinId,
76
+ params: {
77
+ exchange_ids: parseStringList(exchangeIds),
78
+ include_exchange_logo: includeExchangeLogo,
79
+ page,
80
+ order,
81
+ depth,
82
+ },
83
+ });
84
+ const count = response.tickers?.length ?? 0;
85
+ $.export("$summary", `Successfully retrieved ${count} tickers for ${coinId}`);
86
+ return response;
87
+ },
88
+ };
@@ -0,0 +1,34 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-list-coins",
5
+ name: "List Coins",
6
+ description: "List all supported coins with their ID, name, and symbol on CoinGecko. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/coins-list)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ includePlatform: {
17
+ type: "boolean",
18
+ label: "Include Platform",
19
+ description: "Include platform contract addresses (e.g. Ethereum, Solana) for each coin.",
20
+ optional: true,
21
+ },
22
+ },
23
+ async run({ $ }) {
24
+ const { includePlatform } = this;
25
+ const response = await this.app.listCoins({
26
+ $,
27
+ params: {
28
+ include_platform: includePlatform,
29
+ },
30
+ });
31
+ $.export("$summary", `Successfully retrieved ${response.length} coins`);
32
+ return response;
33
+ },
34
+ };
@@ -0,0 +1,40 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-list-markets",
5
+ name: "List Markets",
6
+ description: "Search for coins, exchanges, NFTs, and categories on CoinGecko. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/search-data)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ query: {
17
+ type: "string",
18
+ label: "Query",
19
+ description: "The search query string (e.g. `bitcoin`, `eth`).",
20
+ },
21
+ },
22
+ async run({ $ }) {
23
+ const {
24
+ app,
25
+ query,
26
+ } = this;
27
+ const response = await app.search({
28
+ $,
29
+ params: {
30
+ query,
31
+ },
32
+ });
33
+ const coinsCount = response.coins?.length ?? 0;
34
+ const exchangesCount = response.exchanges?.length ?? 0;
35
+ const nftsCount = response.nfts?.length ?? 0;
36
+ const total = coinsCount + exchangesCount + nftsCount;
37
+ $.export("$summary", `Successfully retrieved ${total} results for "${query}"`);
38
+ return response;
39
+ },
40
+ };
@@ -0,0 +1,25 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-list-trending-coins",
5
+ name: "List Trending Coins",
6
+ description: "List the top-7 trending coins on CoinGecko based on search volume in the last 24 hours. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/trending-search)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ },
17
+ async run({ $ }) {
18
+ const response = await this.app.getTrending({
19
+ $,
20
+ });
21
+ const coins = response.coins ?? [];
22
+ $.export("$summary", `Successfully retrieved ${coins.length} trending coins`);
23
+ return coins;
24
+ },
25
+ };
@@ -0,0 +1,25 @@
1
+ import app from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-list-trending-nfts",
5
+ name: "List Trending NFTs",
6
+ description: "List the top-7 trending NFTs on CoinGecko based on the highest trading volume in the last 24 hours. [See the documentation](https://docs.coingecko.com/v3.0.1/reference/trending-search)",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ readOnlyHint: true,
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ },
14
+ props: {
15
+ app,
16
+ },
17
+ async run({ $ }) {
18
+ const response = await this.app.getTrending({
19
+ $,
20
+ });
21
+ const nfts = response.nfts ?? [];
22
+ $.export("$summary", `Successfully retrieved ${nfts.length} trending NFTs`);
23
+ return nfts;
24
+ },
25
+ };
@@ -0,0 +1,24 @@
1
+ import coingecko from "../../coingecko.app.mjs";
2
+
3
+ export default {
4
+ key: "coingecko-list-vs-currency-options",
5
+ name: "List vs Currency Options",
6
+ description: "Retrieves available options for the vs Currency field.",
7
+ version: "0.0.1",
8
+ type: "action",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ props: {
15
+ coingecko,
16
+ },
17
+ async run({ $ }) {
18
+ const options = await coingecko.propDefinitions.vsCurrency.options.call(this.coingecko);
19
+ $.export("$summary", `Successfully retrieved ${options.length} option${options.length === 1
20
+ ? ""
21
+ : "s"}`);
22
+ return options;
23
+ },
24
+ };
package/coingecko.app.mjs CHANGED
@@ -1,11 +1,148 @@
1
+ import { axios } from "@pipedream/platform";
2
+
1
3
  export default {
2
4
  type: "app",
3
5
  app: "coingecko",
4
- propDefinitions: {},
6
+ propDefinitions: {
7
+ coinId: {
8
+ type: "string",
9
+ label: "Coin ID",
10
+ description: "The coin ID (e.g. `bitcoin`, `ethereum`). Use the **List Coins** action to find the ID of the coin you want to use.",
11
+ },
12
+ vsCurrency: {
13
+ type: "string",
14
+ label: "vs Currency",
15
+ description: "The target currency to convert to (e.g. `usd`, `eur`, `btc`). [See supported currencies](https://docs.coingecko.com/v3.0.1/reference/simple-supported-currencies)",
16
+ async options() {
17
+ const currencies = await this.getSupportedCurrencies();
18
+ return currencies.map((currency) => ({
19
+ label: currency.toUpperCase(),
20
+ value: currency,
21
+ }));
22
+ },
23
+ },
24
+ exchangeId: {
25
+ type: "string",
26
+ label: "Exchange ID",
27
+ description: "The exchange identifier (e.g. `binance`, `gdax`). [See exchanges list](https://docs.coingecko.com/v3.0.1/reference/exchanges-list)",
28
+ async options() {
29
+ const exchanges = await this.listExchanges();
30
+ return exchanges.map(({
31
+ id, name,
32
+ }) => ({
33
+ label: name,
34
+ value: id,
35
+ }));
36
+ },
37
+ },
38
+ },
5
39
  methods: {
6
- // this.$auth contains connected account data
7
- authKeys() {
8
- console.log(Object.keys(this.$auth));
40
+ _isProduction() {
41
+ return this.$auth.environment === "production";
42
+ },
43
+ getUrl(path) {
44
+ const subdomain = this._isProduction()
45
+ ? "pro-api"
46
+ : "api";
47
+ return `https://${subdomain}.coingecko.com/api/v3${path}`;
48
+ },
49
+ _apiKeyHeader() {
50
+ return this._isProduction()
51
+ ? "x-cg-pro-api-key"
52
+ : "x-cg-demo-api-key";
53
+ },
54
+ getHeaders(headers) {
55
+ return {
56
+ [this._apiKeyHeader()]: this.$auth.api_key,
57
+ ...headers,
58
+ };
59
+ },
60
+ _makeRequest({
61
+ $ = this, path, headers, ...opts
62
+ }) {
63
+ return axios($, {
64
+ url: this.getUrl(path),
65
+ headers: this.getHeaders(headers),
66
+ ...opts,
67
+ });
68
+ },
69
+ getGlobalMarket(opts = {}) {
70
+ return this._makeRequest({
71
+ path: "/global",
72
+ ...opts,
73
+ });
74
+ },
75
+ getExchangeRates(opts = {}) {
76
+ return this._makeRequest({
77
+ path: "/exchange_rates",
78
+ ...opts,
79
+ });
80
+ },
81
+ getGlobalDefiMarket(opts = {}) {
82
+ return this._makeRequest({
83
+ path: "/global/decentralized_finance_defi",
84
+ ...opts,
85
+ });
86
+ },
87
+ search(opts = {}) {
88
+ return this._makeRequest({
89
+ path: "/search",
90
+ ...opts,
91
+ });
92
+ },
93
+ listCoins(opts = {}) {
94
+ return this._makeRequest({
95
+ path: "/coins/list",
96
+ ...opts,
97
+ });
98
+ },
99
+ getCoinTickers({
100
+ coinId, ...opts
101
+ } = {}) {
102
+ return this._makeRequest({
103
+ path: `/coins/${coinId}/tickers`,
104
+ ...opts,
105
+ });
106
+ },
107
+ getTrending(opts = {}) {
108
+ return this._makeRequest({
109
+ path: "/search/trending",
110
+ ...opts,
111
+ });
112
+ },
113
+ listExchanges(opts = {}) {
114
+ return this._makeRequest({
115
+ path: "/exchanges/list",
116
+ ...opts,
117
+ });
118
+ },
119
+ getSupportedCurrencies(opts = {}) {
120
+ return this._makeRequest({
121
+ path: "/simple/supported_vs_currencies",
122
+ ...opts,
123
+ });
124
+ },
125
+ getCoinPrice(opts = {}) {
126
+ return this._makeRequest({
127
+ path: "/simple/price",
128
+ ...opts,
129
+ });
130
+ },
131
+ getCoinHistory({
132
+ coinId, ...opts
133
+ } = {}) {
134
+ return this._makeRequest({
135
+ path: `/coins/${coinId}/history`,
136
+ ...opts,
137
+ });
138
+ },
139
+ getCoin({
140
+ coinId, ...opts
141
+ } = {}) {
142
+ return this._makeRequest({
143
+ path: `/coins/${coinId}`,
144
+ ...opts,
145
+ });
9
146
  },
10
147
  },
11
- };
148
+ };
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Parses a value into a comma-separated string, handling the different
3
+ * formats a user may provide:
4
+ * - Array: ["usd", "eur"] → "usd,eur"
5
+ * - JSON array string: '["usd","eur"]' → "usd,eur"
6
+ * - Comma-separated str: "usd,eur" → "usd,eur"
7
+ * - Single string: "usd" → "usd"
8
+ * - Nullish: null / undefined → undefined
9
+ *
10
+ * @param {string|string[]|null|undefined} value
11
+ * @returns {string|undefined}
12
+ */
13
+ export function parseStringList(value) {
14
+ if (value === null || value === undefined) return undefined;
15
+
16
+ if (Array.isArray(value)) {
17
+ return value.join(",");
18
+ }
19
+
20
+ if (typeof value === "string") {
21
+ const trimmed = value.trim();
22
+ if (trimmed.startsWith("[")) {
23
+ try {
24
+ const parsed = JSON.parse(trimmed);
25
+ if (Array.isArray(parsed)) {
26
+ return parsed.join(",");
27
+ }
28
+ } catch (_) {
29
+ // not valid JSON — fall through and return as-is
30
+ }
31
+ }
32
+ return trimmed;
33
+ }
34
+
35
+ return String(value);
36
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipedream/coingecko",
3
- "version": "0.0.1",
3
+ "version": "0.2.0",
4
4
  "description": "Pipedream CoinGecko Components",
5
5
  "main": "coingecko.app.mjs",
6
6
  "keywords": [
@@ -11,5 +11,8 @@
11
11
  "author": "Pipedream <support@pipedream.com> (https://pipedream.com/)",
12
12
  "publishConfig": {
13
13
  "access": "public"
14
+ },
15
+ "dependencies": {
16
+ "@pipedream/platform": "^3.2.5"
14
17
  }
15
18
  }