Skip to content

Commit ffb94a4

Browse files
committed
.
0 parents  commit ffb94a4

31 files changed

+131745
-0
lines changed

.gitignore

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
# Logs
2+
logs
3+
*.log
4+
npm-debug.log*
5+
yarn-debug.log*
6+
yarn-error.log*
7+
lerna-debug.log*
8+
.pnpm-debug.log*
9+
10+
# Diagnostic reports (https://nodejs.org/api/report.html)
11+
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
12+
13+
# Runtime data
14+
pids
15+
*.pid
16+
*.seed
17+
*.pid.lock
18+
19+
# Directory for instrumented libs generated by jscoverage/JSCover
20+
lib-cov
21+
22+
# Coverage directory used by tools like istanbul
23+
coverage
24+
*.lcov
25+
26+
# nyc test coverage
27+
.nyc_output
28+
29+
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
30+
.grunt
31+
32+
# Bower dependency directory (https://bower.io/)
33+
bower_components
34+
35+
# node-waf configuration
36+
.lock-wscript
37+
38+
# Compiled binary addons (https://nodejs.org/api/addons.html)
39+
build/Release
40+
41+
# Dependency directories
42+
node_modules/
43+
jspm_packages/
44+
45+
# Snowpack dependency directory (https://snowpack.dev/)
46+
web_modules/
47+
48+
# TypeScript cache
49+
*.tsbuildinfo
50+
51+
# Optional npm cache directory
52+
.npm
53+
54+
# Optional eslint cache
55+
.eslintcache
56+
57+
# Optional stylelint cache
58+
.stylelintcache
59+
60+
# Microbundle cache
61+
.rpt2_cache/
62+
.rts2_cache_cjs/
63+
.rts2_cache_es/
64+
.rts2_cache_umd/
65+
66+
# Optional REPL history
67+
.node_repl_history
68+
69+
# Output of 'npm pack'
70+
*.tgz
71+
72+
# Yarn Integrity file
73+
.yarn-integrity
74+
75+
# dotenv environment variable files
76+
.env
77+
.env.development.local
78+
.env.test.local
79+
.env.production.local
80+
.env.local
81+
82+
# parcel-bundler cache (https://parceljs.org/)
83+
.cache
84+
.parcel-cache
85+
86+
# Next.js build output
87+
.next
88+
out
89+
90+
# Nuxt.js build / generate output
91+
.nuxt
92+
dist
93+
94+
# Gatsby files
95+
.cache/
96+
# Comment in the public line in if your project uses Gatsby and not Next.js
97+
# https://nextjs.org/blog/next-9-1#public-directory-support
98+
# public
99+
100+
# vuepress build output
101+
.vuepress/dist
102+
103+
# vuepress v2.x temp and cache directory
104+
.temp
105+
.cache
106+
107+
# Docusaurus cache and generated files
108+
.docusaurus
109+
110+
# Serverless directories
111+
.serverless/
112+
113+
# FuseBox cache
114+
.fusebox/
115+
116+
# DynamoDB Local files
117+
.dynamodb/
118+
119+
# TernJS port file
120+
.tern-port
121+
122+
# Stores VSCode versions used for testing VSCode extensions
123+
.vscode-test
124+
125+
# yarn v2
126+
.yarn/cache
127+
.yarn/unplugged
128+
.yarn/build-state.yml
129+
.yarn/install-state.gz
130+
.pnp.*

ADDITIONAL_TOKEN_SOURCES_README.md

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Additional Token Sources for LightX
2+
3+
This document explains how to implement monitoring for additional token sources in the LightX application. The implementation includes frontend and backend changes to support Raydium and Jupiter token sources.
4+
5+
## Overview of Changes
6+
7+
1. **Frontend changes:**
8+
- Added UI for selecting token sources to monitor
9+
- Modified CSS to style the source selection and source badges
10+
- Updated JavaScript to send selected sources to the server
11+
- Added visual indicators for token sources in the UI
12+
13+
2. **Backend changes:**
14+
- Created implementation for monitoring Raydium tokens
15+
- Created implementation for monitoring Jupiter tokens
16+
- Updated socket.io handlers to respect source selection
17+
- Enhanced token data to include source information
18+
19+
## How to Implement
20+
21+
### Backend Integration
22+
23+
1. Copy the functions from `src/token-monitoring-extensions.ts` into your main `src/index.ts` file:
24+
- `monitorRaydiumTokens`
25+
- `monitorJupiterTokens`
26+
- Update your `sendTokenInfo` function to include source information
27+
28+
2. Update your Socket.io connection handler in `src/index.ts` to use the selected sources:
29+
30+
```typescript
31+
// Socket.io connection handling
32+
io.on('connection', (socket: Socket) => {
33+
console.log(`Client connected: ${socket.id}`);
34+
35+
// Handle start monitoring request
36+
socket.on('startMonitoring', (data?: {clientId?: string, address?: string, sources?: any}) => {
37+
const clientId = socket.id;
38+
39+
// Get selected sources or use defaults
40+
const selectedSources = data?.sources || {
41+
rayFee: true,
42+
pumpFun: true,
43+
moonshot: true,
44+
raydium: true,
45+
jupiter: true
46+
};
47+
48+
console.log(`Starting monitoring for client: ${clientId} with sources:`, selectedSources);
49+
50+
// Start all selected monitoring services
51+
if (selectedSources.rayFee) {
52+
monitorNewTokens(solanaConnection, clientId);
53+
}
54+
55+
if (selectedSources.pumpFun) {
56+
monitorPumpFunTokens(solanaConnection, clientId);
57+
}
58+
59+
if (selectedSources.moonshot) {
60+
monitorMoonshotTokens(solanaConnection, clientId);
61+
}
62+
63+
if (selectedSources.raydium) {
64+
monitorRaydiumTokens(solanaConnection, clientId);
65+
}
66+
67+
if (selectedSources.jupiter) {
68+
monitorJupiterTokens(solanaConnection, clientId);
69+
}
70+
71+
// Confirm to the client
72+
socket.emit('monitoringStarted', { success: true });
73+
});
74+
});
75+
```
76+
77+
3. Update the `clientToMonitoringMap` to include the new sources:
78+
```typescript
79+
const clientToMonitoringMap = new Map<string, {
80+
newTokens: boolean,
81+
pumpFun: boolean,
82+
moonshot: boolean,
83+
raydium: boolean,
84+
jupiter: boolean
85+
}>();
86+
```
87+
88+
4. Update the `sendTokenInfo` function to include the source information:
89+
```typescript
90+
async function sendTokenInfo(socketId: string, message: string, tokenAddress: string, source: string = 'Unknown') {
91+
try {
92+
// ... existing code ...
93+
94+
const tokenData = {
95+
tokenAddress: tokenAddress,
96+
tokenName: tokenMetadata.name || 'Unknown Token',
97+
tokenSymbol: tokenMetadata.symbol || 'UNKNOWN',
98+
tokenImageUrl: tokenMetadata.image,
99+
marketCap: birdeyeData.marketCap,
100+
tokenScore: tokenScore || 0,
101+
source: source, // Added source information
102+
timestamp: new Date().toISOString()
103+
};
104+
105+
// ... rest of function ...
106+
} catch (error) {
107+
console.error(`Error in sendTokenInfo: ${error}`);
108+
}
109+
}
110+
```
111+
112+
## How It Works
113+
114+
The implementation monitors program IDs associated with Raydium and Jupiter to detect new token activity. When a relevant transaction is detected, the code extracts the token address and sends it to the client with source information.
115+
116+
Each token source has its own monitoring function that runs independently. When a user selects specific sources, only those monitors will be activated, reducing server load and focusing on the sources the user cares about.
117+
118+
## Additional Customization
119+
120+
You can add more token sources by following the same pattern:
121+
122+
1. Define the program ID for the new source
123+
2. Create a monitoring function similar to the examples
124+
3. Update the UI to include a checkbox for the new source
125+
4. Add CSS for the new source badge
126+
5. Update the socket handler to start the new monitor when selected
127+
128+
## Token Source Identification Criteria
129+
130+
Each token source uses different criteria to identify new tokens:
131+
132+
- **RayFee**: Monitors transactions that pay fees to the RayFee program
133+
- **PumpFun**: Monitors the PumpFun program for new token creation
134+
- **Moonshot**: Monitors the Moonshot program for new token listings
135+
- **Raydium**: Monitors for new pools and swaps on Raydium
136+
- **Jupiter**: Monitors for first swaps of new tokens on Jupiter
137+
138+
## Testing
139+
140+
To test the implementation, start monitoring with different source combinations selected and verify that:
141+
142+
1. Only the selected sources are being monitored
143+
2. Tokens from different sources display with the correct source badge
144+
3. The monitoring can be stopped and restarted with different selections

CHANGELOG.md

108 Bytes

Fixed wallet connection and monitoring state issues

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2024 (https://t.me/OXOOOOOOl)
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

Procfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
web: npm start

0 commit comments

Comments
 (0)