solvoid 1.1.2 → 1.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.
Files changed (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +240 -230
  3. package/SECURITY.md +39 -0
  4. package/bin/solvoid-scan +2 -0
  5. package/dist/cli/commands/ghost.d.ts +11 -0
  6. package/dist/cli/commands/ghost.d.ts.map +1 -0
  7. package/dist/cli/commands/ghost.js +185 -0
  8. package/dist/cli/commands/ghost.js.map +1 -0
  9. package/dist/cli/commands/rescue.d.ts +3 -0
  10. package/dist/cli/commands/rescue.d.ts.map +1 -0
  11. package/dist/cli/commands/rescue.js +300 -0
  12. package/dist/cli/commands/rescue.js.map +1 -0
  13. package/dist/cli/comprehensive-rpc-list.d.ts +31 -0
  14. package/dist/cli/comprehensive-rpc-list.d.ts.map +1 -0
  15. package/dist/cli/comprehensive-rpc-list.js +341 -0
  16. package/dist/cli/comprehensive-rpc-list.js.map +1 -0
  17. package/dist/cli/demo-scan.d.ts +6 -0
  18. package/dist/cli/demo-scan.d.ts.map +1 -0
  19. package/dist/cli/demo-scan.js +260 -0
  20. package/dist/cli/demo-scan.js.map +1 -0
  21. package/dist/cli/enhanced-privacy-scan.d.ts +46 -0
  22. package/dist/cli/enhanced-privacy-scan.d.ts.map +1 -0
  23. package/dist/cli/enhanced-privacy-scan.js +422 -0
  24. package/dist/cli/enhanced-privacy-scan.js.map +1 -0
  25. package/dist/cli/ghost-test.d.ts +7 -0
  26. package/dist/cli/ghost-test.d.ts.map +1 -0
  27. package/dist/cli/ghost-test.js +192 -0
  28. package/dist/cli/ghost-test.js.map +1 -0
  29. package/dist/cli/simple-scan.d.ts +6 -0
  30. package/dist/cli/simple-scan.d.ts.map +1 -0
  31. package/dist/cli/simple-scan.js +250 -0
  32. package/dist/cli/simple-scan.js.map +1 -0
  33. package/dist/cli/solvoid-scan.d.ts +6 -0
  34. package/dist/cli/solvoid-scan.d.ts.map +1 -0
  35. package/dist/cli/solvoid-scan.js +254 -0
  36. package/dist/cli/solvoid-scan.js.map +1 -0
  37. package/dist/cli/ultimate-privacy-scan.d.ts +54 -0
  38. package/dist/cli/ultimate-privacy-scan.d.ts.map +1 -0
  39. package/dist/cli/ultimate-privacy-scan.js +543 -0
  40. package/dist/cli/ultimate-privacy-scan.js.map +1 -0
  41. package/dist/cli/utils/asset-scanner.d.ts +76 -0
  42. package/dist/cli/utils/asset-scanner.d.ts.map +1 -0
  43. package/dist/cli/utils/asset-scanner.js +222 -0
  44. package/dist/cli/utils/asset-scanner.js.map +1 -0
  45. package/dist/cli/utils/badge-generator.d.ts +33 -0
  46. package/dist/cli/utils/badge-generator.d.ts.map +1 -0
  47. package/dist/cli/utils/badge-generator.js +261 -0
  48. package/dist/cli/utils/badge-generator.js.map +1 -0
  49. package/dist/cli/utils/env-validator.d.ts +17 -0
  50. package/dist/cli/utils/env-validator.d.ts.map +1 -0
  51. package/dist/cli/utils/env-validator.js +254 -0
  52. package/dist/cli/utils/env-validator.js.map +1 -0
  53. package/dist/cli/utils/ghost-art.d.ts +14 -0
  54. package/dist/cli/utils/ghost-art.d.ts.map +1 -0
  55. package/dist/cli/utils/ghost-art.js +285 -0
  56. package/dist/cli/utils/ghost-art.js.map +1 -0
  57. package/dist/cli/utils/ghost-calculator.d.ts +52 -0
  58. package/dist/cli/utils/ghost-calculator.d.ts.map +1 -0
  59. package/dist/cli/utils/ghost-calculator.js +207 -0
  60. package/dist/cli/utils/ghost-calculator.js.map +1 -0
  61. package/dist/cli/utils/rescue-engine.d.ts +61 -0
  62. package/dist/cli/utils/rescue-engine.d.ts.map +1 -0
  63. package/dist/cli/utils/rescue-engine.js +210 -0
  64. package/dist/cli/utils/rescue-engine.js.map +1 -0
  65. package/dist/cli/utils/threat-detector.d.ts +48 -0
  66. package/dist/cli/utils/threat-detector.d.ts.map +1 -0
  67. package/dist/cli/utils/threat-detector.js +304 -0
  68. package/dist/cli/utils/threat-detector.js.map +1 -0
  69. package/dist/{client.d.ts → sdk/client.d.ts} +8 -0
  70. package/dist/sdk/client.d.ts.map +1 -0
  71. package/dist/{client.js → sdk/client.js} +115 -19
  72. package/dist/sdk/client.js.map +1 -0
  73. package/dist/sdk/crypto/poseidon.d.ts.map +1 -0
  74. package/dist/sdk/crypto/poseidon.js.map +1 -0
  75. package/dist/sdk/events/bus.d.ts.map +1 -0
  76. package/dist/sdk/events/bus.js.map +1 -0
  77. package/dist/sdk/index.d.ts.map +1 -0
  78. package/dist/sdk/index.js.map +1 -0
  79. package/dist/sdk/integrity.d.ts.map +1 -0
  80. package/dist/sdk/integrity.js.map +1 -0
  81. package/dist/sdk/network/shadow-rpc.d.ts.map +1 -0
  82. package/dist/sdk/network/shadow-rpc.js.map +1 -0
  83. package/dist/sdk/passport/manager.d.ts.map +1 -0
  84. package/dist/sdk/passport/manager.js.map +1 -0
  85. package/dist/sdk/pipeline.d.ts.map +1 -0
  86. package/dist/sdk/pipeline.js.map +1 -0
  87. package/dist/sdk/privacy/relayer.d.ts.map +1 -0
  88. package/dist/sdk/privacy/relayer.js.map +1 -0
  89. package/dist/{privacy → sdk/privacy}/shield.d.ts +4 -1
  90. package/dist/sdk/privacy/shield.d.ts.map +1 -0
  91. package/dist/{privacy → sdk/privacy}/shield.js +57 -11
  92. package/dist/sdk/privacy/shield.js.map +1 -0
  93. package/dist/sdk/privacy-engine.d.ts.map +1 -0
  94. package/dist/sdk/privacy-engine.js.map +1 -0
  95. package/dist/sdk/registry/idl-fetcher.d.ts.map +1 -0
  96. package/dist/sdk/registry/idl-fetcher.js.map +1 -0
  97. package/dist/sdk/registry/programs.d.ts.map +1 -0
  98. package/dist/sdk/registry/programs.js.map +1 -0
  99. package/dist/sdk/rescue/analyzer.d.ts.map +1 -0
  100. package/dist/sdk/rescue/analyzer.js.map +1 -0
  101. package/dist/sdk/rescue/builder.d.ts.map +1 -0
  102. package/dist/sdk/rescue/builder.js.map +1 -0
  103. package/dist/sdk/security/key-rotation.d.ts.map +1 -0
  104. package/dist/sdk/security/key-rotation.js.map +1 -0
  105. package/dist/{semantics → sdk/semantics}/analyzer.d.ts.map +1 -1
  106. package/dist/{semantics → sdk/semantics}/analyzer.js.map +1 -1
  107. package/dist/sdk/semantics/decoder.d.ts.map +1 -0
  108. package/dist/sdk/semantics/decoder.js.map +1 -0
  109. package/dist/{semantics → sdk/semantics}/graph.d.ts.map +1 -1
  110. package/dist/{semantics → sdk/semantics}/graph.js.map +1 -1
  111. package/dist/sdk/semantics/idl-registry.d.ts.map +1 -0
  112. package/dist/sdk/semantics/idl-registry.js.map +1 -0
  113. package/dist/sdk/semantics/types.d.ts.map +1 -0
  114. package/dist/sdk/semantics/types.js.map +1 -0
  115. package/dist/sdk/types.d.ts.map +1 -0
  116. package/dist/{semantics → sdk}/types.js.map +1 -1
  117. package/dist/sdk/utils/address.d.ts.map +1 -0
  118. package/dist/sdk/utils/address.js.map +1 -0
  119. package/dist/sdk/utils/config.d.ts.map +1 -0
  120. package/dist/sdk/utils/config.js.map +1 -0
  121. package/dist/sdk/utils/logger.d.ts.map +1 -0
  122. package/dist/sdk/utils/logger.js.map +1 -0
  123. package/dist/simple-scan.js +249 -0
  124. package/package.json +104 -37
  125. package/CHANGELOG.md +0 -118
  126. package/dist/client.d.ts.map +0 -1
  127. package/dist/client.js.map +0 -1
  128. package/dist/crypto/poseidon.d.ts.map +0 -1
  129. package/dist/crypto/poseidon.js.map +0 -1
  130. package/dist/events/bus.d.ts.map +0 -1
  131. package/dist/events/bus.js.map +0 -1
  132. package/dist/index.d.ts.map +0 -1
  133. package/dist/index.js.map +0 -1
  134. package/dist/integrity.d.ts.map +0 -1
  135. package/dist/integrity.js.map +0 -1
  136. package/dist/network/shadow-rpc.d.ts.map +0 -1
  137. package/dist/network/shadow-rpc.js.map +0 -1
  138. package/dist/passport/manager.d.ts.map +0 -1
  139. package/dist/passport/manager.js.map +0 -1
  140. package/dist/pipeline.d.ts.map +0 -1
  141. package/dist/pipeline.js.map +0 -1
  142. package/dist/privacy/relayer.d.ts.map +0 -1
  143. package/dist/privacy/relayer.js.map +0 -1
  144. package/dist/privacy/shield.d.ts.map +0 -1
  145. package/dist/privacy/shield.js.map +0 -1
  146. package/dist/privacy-engine.d.ts.map +0 -1
  147. package/dist/privacy-engine.js.map +0 -1
  148. package/dist/registry/idl-fetcher.d.ts.map +0 -1
  149. package/dist/registry/idl-fetcher.js.map +0 -1
  150. package/dist/registry/programs.d.ts.map +0 -1
  151. package/dist/registry/programs.js.map +0 -1
  152. package/dist/rescue/analyzer.d.ts.map +0 -1
  153. package/dist/rescue/analyzer.js.map +0 -1
  154. package/dist/rescue/builder.d.ts.map +0 -1
  155. package/dist/rescue/builder.js.map +0 -1
  156. package/dist/security/key-rotation.d.ts.map +0 -1
  157. package/dist/security/key-rotation.js.map +0 -1
  158. package/dist/semantics/decoder.d.ts.map +0 -1
  159. package/dist/semantics/decoder.js.map +0 -1
  160. package/dist/semantics/idl-registry.d.ts.map +0 -1
  161. package/dist/semantics/idl-registry.js.map +0 -1
  162. package/dist/semantics/types.d.ts.map +0 -1
  163. package/dist/types.d.ts.map +0 -1
  164. package/dist/types.js.map +0 -1
  165. package/dist/utils/address.d.ts.map +0 -1
  166. package/dist/utils/address.js.map +0 -1
  167. package/dist/utils/config.d.ts.map +0 -1
  168. package/dist/utils/config.js.map +0 -1
  169. package/dist/utils/logger.d.ts.map +0 -1
  170. package/dist/utils/logger.js.map +0 -1
  171. /package/dist/{crypto → sdk/crypto}/poseidon.d.ts +0 -0
  172. /package/dist/{crypto → sdk/crypto}/poseidon.js +0 -0
  173. /package/dist/{events → sdk/events}/bus.d.ts +0 -0
  174. /package/dist/{events → sdk/events}/bus.js +0 -0
  175. /package/dist/{index.d.ts → sdk/index.d.ts} +0 -0
  176. /package/dist/{index.js → sdk/index.js} +0 -0
  177. /package/dist/{integrity.d.ts → sdk/integrity.d.ts} +0 -0
  178. /package/dist/{integrity.js → sdk/integrity.js} +0 -0
  179. /package/dist/{network → sdk/network}/shadow-rpc.d.ts +0 -0
  180. /package/dist/{network → sdk/network}/shadow-rpc.js +0 -0
  181. /package/dist/{passport → sdk/passport}/manager.d.ts +0 -0
  182. /package/dist/{passport → sdk/passport}/manager.js +0 -0
  183. /package/dist/{pipeline.d.ts → sdk/pipeline.d.ts} +0 -0
  184. /package/dist/{pipeline.js → sdk/pipeline.js} +0 -0
  185. /package/dist/{privacy → sdk/privacy}/relayer.d.ts +0 -0
  186. /package/dist/{privacy → sdk/privacy}/relayer.js +0 -0
  187. /package/dist/{privacy-engine.d.ts → sdk/privacy-engine.d.ts} +0 -0
  188. /package/dist/{privacy-engine.js → sdk/privacy-engine.js} +0 -0
  189. /package/dist/{registry → sdk/registry}/idl-fetcher.d.ts +0 -0
  190. /package/dist/{registry → sdk/registry}/idl-fetcher.js +0 -0
  191. /package/dist/{registry → sdk/registry}/programs.d.ts +0 -0
  192. /package/dist/{registry → sdk/registry}/programs.js +0 -0
  193. /package/dist/{rescue → sdk/rescue}/analyzer.d.ts +0 -0
  194. /package/dist/{rescue → sdk/rescue}/analyzer.js +0 -0
  195. /package/dist/{rescue → sdk/rescue}/builder.d.ts +0 -0
  196. /package/dist/{rescue → sdk/rescue}/builder.js +0 -0
  197. /package/dist/{security → sdk/security}/key-rotation.d.ts +0 -0
  198. /package/dist/{security → sdk/security}/key-rotation.js +0 -0
  199. /package/dist/{semantics → sdk/semantics}/analyzer.d.ts +0 -0
  200. /package/dist/{semantics → sdk/semantics}/analyzer.js +0 -0
  201. /package/dist/{semantics → sdk/semantics}/decoder.d.ts +0 -0
  202. /package/dist/{semantics → sdk/semantics}/decoder.js +0 -0
  203. /package/dist/{semantics → sdk/semantics}/graph.d.ts +0 -0
  204. /package/dist/{semantics → sdk/semantics}/graph.js +0 -0
  205. /package/dist/{semantics → sdk/semantics}/idl-registry.d.ts +0 -0
  206. /package/dist/{semantics → sdk/semantics}/idl-registry.js +0 -0
  207. /package/dist/{semantics → sdk/semantics}/types.d.ts +0 -0
  208. /package/dist/{semantics → sdk/semantics}/types.js +0 -0
  209. /package/dist/{types.d.ts → sdk/types.d.ts} +0 -0
  210. /package/dist/{types.js → sdk/types.js} +0 -0
  211. /package/dist/{utils → sdk/utils}/address.d.ts +0 -0
  212. /package/dist/{utils → sdk/utils}/address.js +0 -0
  213. /package/dist/{utils → sdk/utils}/config.d.ts +0 -0
  214. /package/dist/{utils → sdk/utils}/config.js +0 -0
  215. /package/dist/{utils → sdk/utils}/logger.d.ts +0 -0
  216. /package/dist/{utils → sdk/utils}/logger.js +0 -0
@@ -0,0 +1,254 @@
1
+ "use strict";
2
+ // ============================================================================
3
+ // ENVIRONMENT VALIDATION UTILITY
4
+ // Validates required environment variables and provides defaults
5
+ // ============================================================================
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.EnvironmentValidator = void 0;
41
+ const dotenv = __importStar(require("dotenv"));
42
+ dotenv.config();
43
+ class EnvironmentValidator {
44
+ constructor() {
45
+ this.requiredVars = [
46
+ 'SOLANA_RPC_MAINNET',
47
+ 'ZK_PROGRAM_ID'
48
+ ];
49
+ this.optionalVars = {
50
+ 'ALCHEMY_API_KEY': {
51
+ default: '',
52
+ description: 'Alchemy API key for premium RPC access'
53
+ },
54
+ 'THREAT_INTEL_API_KEY': {
55
+ default: '',
56
+ description: 'Threat intelligence API key'
57
+ },
58
+ 'JUPITER_API_KEY': {
59
+ default: '',
60
+ description: 'Jupiter API key for price oracle'
61
+ },
62
+ 'SOLANA_RPC_BACKUP_1': {
63
+ default: 'https://solana-api.projectserum.com',
64
+ description: 'First backup RPC endpoint'
65
+ },
66
+ 'SOLANA_RPC_BACKUP_2': {
67
+ default: 'https://rpc.ankr.com/solana',
68
+ description: 'Second backup RPC endpoint'
69
+ },
70
+ 'SOLANA_RPC_BACKUP_3': {
71
+ default: '',
72
+ description: 'Third backup RPC endpoint (Alchemy)'
73
+ },
74
+ 'MERKLE_TREE_LEVELS': {
75
+ default: '20',
76
+ description: 'Merkle tree levels for ZK commitments',
77
+ validator: (value) => {
78
+ const num = parseInt(value);
79
+ return num >= 10 && num <= 30;
80
+ }
81
+ },
82
+ 'MAX_RETRY_ATTEMPTS': {
83
+ default: '5',
84
+ description: 'Maximum retry attempts for failed transactions',
85
+ validator: (value) => {
86
+ const num = parseInt(value);
87
+ return num >= 1 && num <= 10;
88
+ }
89
+ },
90
+ 'TRANSACTION_TIMEOUT_MS': {
91
+ default: '60000',
92
+ description: 'Transaction timeout in milliseconds',
93
+ validator: (value) => {
94
+ const num = parseInt(value);
95
+ return num >= 10000 && num <= 300000;
96
+ }
97
+ },
98
+ 'COMPUTE_UNIT_LIMIT': {
99
+ default: '1400000',
100
+ description: 'Compute unit limit for large transactions',
101
+ validator: (value) => {
102
+ const num = parseInt(value);
103
+ return num >= 200000 && num <= 14000000;
104
+ }
105
+ },
106
+ 'PRIORITY_FEE_LAMPORTS': {
107
+ default: '50000',
108
+ description: 'Priority fee in lamports for faster execution',
109
+ validator: (value) => {
110
+ const num = parseInt(value);
111
+ return num >= 1000 && num <= 1000000;
112
+ }
113
+ },
114
+ 'MAX_PARALLEL_SCANS': {
115
+ default: '10',
116
+ description: 'Maximum parallel asset scans',
117
+ validator: (value) => {
118
+ const num = parseInt(value);
119
+ return num >= 1 && num <= 50;
120
+ }
121
+ },
122
+ 'SCAN_BATCH_SIZE': {
123
+ default: '50',
124
+ description: 'Batch size for token account scanning',
125
+ validator: (value) => {
126
+ const num = parseInt(value);
127
+ return num >= 10 && num <= 200;
128
+ }
129
+ },
130
+ 'ENABLE_AUDIT_LOGGING': {
131
+ default: 'true',
132
+ description: 'Enable audit logging',
133
+ validator: (value) => ['true', 'false'].includes(value.toLowerCase())
134
+ },
135
+ 'LOG_RETENTION_DAYS': {
136
+ default: '90',
137
+ description: 'Log retention period in days',
138
+ validator: (value) => {
139
+ const num = parseInt(value);
140
+ return num >= 1 && num <= 365;
141
+ }
142
+ },
143
+ 'ENABLE_MONITORING': {
144
+ default: 'true',
145
+ description: 'Enable real-time monitoring',
146
+ validator: (value) => ['true', 'false'].includes(value.toLowerCase())
147
+ },
148
+ 'ALERT_WEBHOOK_URL': {
149
+ default: '',
150
+ description: 'Webhook URL for alerts (optional)'
151
+ },
152
+ 'ALERT_EMAIL': {
153
+ default: '',
154
+ description: 'Email for alerts (optional)',
155
+ validator: (value) => {
156
+ if (!value)
157
+ return true; // Optional
158
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
159
+ return emailRegex.test(value);
160
+ }
161
+ },
162
+ 'USE_DEVNET': {
163
+ default: 'false',
164
+ description: 'Use devnet instead of mainnet for testing',
165
+ validator: (value) => ['true', 'false'].includes(value.toLowerCase())
166
+ },
167
+ 'DEBUG_MODE': {
168
+ default: 'false',
169
+ description: 'Enable debug mode for detailed logging',
170
+ validator: (value) => ['true', 'false'].includes(value.toLowerCase())
171
+ },
172
+ 'SKIP_ZK_PROOFS': {
173
+ default: 'false',
174
+ description: 'Skip ZK proof generation for faster testing (dev only)',
175
+ validator: (value) => ['true', 'false'].includes(value.toLowerCase())
176
+ }
177
+ };
178
+ this.validationErrors = [];
179
+ this.warnings = [];
180
+ }
181
+ validate() {
182
+ this.validationErrors = [];
183
+ this.warnings = [];
184
+ // Check required variables
185
+ for (const varName of this.requiredVars) {
186
+ const value = process.env[varName];
187
+ if (!value || value.trim() === '') {
188
+ this.validationErrors.push(`Required environment variable ${varName} is missing or empty`);
189
+ }
190
+ }
191
+ // Check optional variables and apply defaults
192
+ const validatedConfig = {};
193
+ for (const [varName, config] of Object.entries(this.optionalVars)) {
194
+ const value = process.env[varName];
195
+ if (!value || value.trim() === '') {
196
+ if (value === '' && config.default === '') {
197
+ // Empty string is acceptable for variables with empty default
198
+ validatedConfig[varName] = value;
199
+ }
200
+ else {
201
+ validatedConfig[varName] = config.default;
202
+ if (value !== undefined) {
203
+ this.warnings.push(`Using default value for ${varName}: ${config.default}`);
204
+ }
205
+ }
206
+ }
207
+ else {
208
+ // Validate the provided value
209
+ if (config.validator && !config.validator(value)) {
210
+ this.validationErrors.push(`Invalid value for ${varName}: ${value}. Expected: ${config.description}`);
211
+ validatedConfig[varName] = config.default;
212
+ }
213
+ else {
214
+ validatedConfig[varName] = value;
215
+ }
216
+ }
217
+ }
218
+ return {
219
+ isValid: this.validationErrors.length === 0,
220
+ errors: this.validationErrors,
221
+ warnings: this.warnings,
222
+ config: validatedConfig
223
+ };
224
+ }
225
+ printValidation() {
226
+ const result = this.validate();
227
+ console.log('\n Environment Validation Results:');
228
+ console.log('=====================================');
229
+ if (result.isValid) {
230
+ console.log(' All environment variables are valid!');
231
+ }
232
+ else {
233
+ console.log(' Validation errors found:');
234
+ result.errors.forEach(error => console.log(` - ${error}`));
235
+ }
236
+ if (result.warnings.length > 0) {
237
+ console.log('\n Warnings:');
238
+ result.warnings.forEach(warning => console.log(` - ${warning}`));
239
+ }
240
+ console.log('\n Configuration Summary:');
241
+ for (const [key, value] of Object.entries(result.config)) {
242
+ if (key.includes('KEY') || key.includes('SECRET') || key.includes('TOKEN')) {
243
+ console.log(` ${key}: [REDACTED]`);
244
+ }
245
+ else {
246
+ console.log(` ${key}: ${value}`);
247
+ }
248
+ }
249
+ console.log('=====================================\n');
250
+ return result;
251
+ }
252
+ }
253
+ exports.EnvironmentValidator = EnvironmentValidator;
254
+ //# sourceMappingURL=env-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-validator.js","sourceRoot":"","sources":["../../../cli/utils/env-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { GhostScore, PrivacyBadge } from './ghost-calculator';
2
+ export declare class GhostArt {
3
+ static getGhostArt(level: string): string;
4
+ static getProgressBar(score: number, total?: number): string;
5
+ static getHeader(): string;
6
+ static getFooter(): string;
7
+ static formatScore(score: GhostScore): string;
8
+ static formatThreats(threats: any[]): string;
9
+ static formatRecommendations(recommendations: string[]): string;
10
+ static formatGhostScore(score: GhostScore): string;
11
+ static formatJson(score: GhostScore): string;
12
+ static formatBadge(badge: PrivacyBadge): string;
13
+ }
14
+ //# sourceMappingURL=ghost-art.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghost-art.d.ts","sourceRoot":"","sources":["../../../cli/utils/ghost-art.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE9D,qBAAa,QAAQ;IACnB,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmFzC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAY,GAAG,MAAM;IAejE,MAAM,CAAC,SAAS,IAAI,MAAM;IAS1B,MAAM,CAAC,SAAS,IAAI,MAAM;IAO1B,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAkC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM;IAoD5C,MAAM,CAAC,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM;IAuB/D,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAclD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAI5C,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM;CAyChD"}
@@ -0,0 +1,285 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GhostArt = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ class GhostArt {
9
+ static getGhostArt(level) {
10
+ const ghostArt = {
11
+ 'Invisible': `
12
+ ${chalk_1.default.cyan(' ')}
13
+ ${chalk_1.default.cyan(' ')}
14
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' .-.\n') + chalk_1.default.cyan(' ')}
15
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' |o_o |\n') + chalk_1.default.cyan(' ')}
16
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' |:_/ |\n') + chalk_1.default.cyan(' ')}
17
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' // \\ \\ \n') + chalk_1.default.cyan(' ')}
18
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' (| | ) \n') + chalk_1.default.cyan(' ')}
19
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' /\'|_ _/\'|\\\n') + chalk_1.default.cyan(' ')}
20
+ ${chalk_1.default.cyan(' ') + chalk_1.default.white(' \\___)-(___/ \n') + chalk_1.default.cyan(' ')}
21
+ ${chalk_1.default.cyan(' ')}
22
+ ${chalk_1.default.cyan(' ')}
23
+
24
+ ${chalk_1.default.green(' INVISIBLE - PERFECT STEALTH ')}
25
+ ${chalk_1.default.gray(' ')}`,
26
+ 'Translucent': `
27
+ ${chalk_1.default.blue(' ')}
28
+ ${chalk_1.default.blue(' ')}
29
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' .-.\n') + chalk_1.default.blue(' ')}
30
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' |o_o |\n') + chalk_1.default.blue(' ')}
31
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' |:_/ |\n') + chalk_1.default.blue(' ')}
32
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' // \\ \\ \n') + chalk_1.default.blue(' ')}
33
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' (| | ) \n') + chalk_1.default.blue(' ')}
34
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' /\'|_ _/\'|\\\n') + chalk_1.default.blue(' ')}
35
+ ${chalk_1.default.blue(' ') + chalk_1.default.gray(' \\___)-(___/ \n') + chalk_1.default.blue(' ')}
36
+ ${chalk_1.default.blue(' ')}
37
+ ${chalk_1.default.blue(' ')}
38
+
39
+ ${chalk_1.default.cyan(' TRANSLUCENT - SEMI-STEALTH ')}
40
+ ${chalk_1.default.gray(' ')}`,
41
+ 'Visible': `
42
+ ${chalk_1.default.yellow(' ')}
43
+ ${chalk_1.default.yellow(' ')}
44
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' .-.\n') + chalk_1.default.yellow(' ')}
45
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' |o_o |\n') + chalk_1.default.yellow(' ')}
46
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' |:_/ |\n') + chalk_1.default.yellow(' ')}
47
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' // \\ \\ \n') + chalk_1.default.yellow(' ')}
48
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' (| | ) \n') + chalk_1.default.yellow(' ')}
49
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' /\'|_ _/\'|\\\n') + chalk_1.default.yellow(' ')}
50
+ ${chalk_1.default.yellow(' ') + chalk_1.default.white(' \\___)-(___/ \n') + chalk_1.default.yellow(' ')}
51
+ ${chalk_1.default.yellow(' ')}
52
+ ${chalk_1.default.yellow(' ')}
53
+
54
+ ${chalk_1.default.yellow(' VISIBLE - DETECTABLE ')}
55
+ ${chalk_1.default.gray(' ')}`,
56
+ 'Exposed': `
57
+ ${chalk_1.default.magenta(' ')}
58
+ ${chalk_1.default.magenta(' ')}
59
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' .-.\n') + chalk_1.default.magenta(' ')}
60
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' |o_o |\n') + chalk_1.default.magenta(' ')}
61
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' |:_/ |\n') + chalk_1.default.magenta(' ')}
62
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' // \\ \\ \n') + chalk_1.default.magenta(' ')}
63
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' (| | ) \n') + chalk_1.default.magenta(' ')}
64
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' /\'|_ _/\'|\\\n') + chalk_1.default.magenta(' ')}
65
+ ${chalk_1.default.magenta(' ') + chalk_1.default.white(' \\___)-(___/ \n') + chalk_1.default.magenta(' ')}
66
+ ${chalk_1.default.magenta(' ')}
67
+ ${chalk_1.default.magenta(' ')}
68
+
69
+ ${chalk_1.default.red(' EXPOSED - HIGH RISK ')}
70
+ ${chalk_1.default.gray(' ')}`,
71
+ 'Glass House': `
72
+ ${chalk_1.default.red(' ')}
73
+ ${chalk_1.default.red(' ') + chalk_1.default.bgRed(' CRITICAL PRIVACY BREACH ') + chalk_1.default.red(' ')}
74
+ ${chalk_1.default.red(' ')}
75
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' .-.\n') + chalk_1.default.red(' ')}
76
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' |x_x |\n') + chalk_1.default.red(' ')}
77
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' |:_/ |\n') + chalk_1.default.red(' ')}
78
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' // \\ \\ \n') + chalk_1.default.red(' ')}
79
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' (| | ) \n') + chalk_1.default.red(' ')}
80
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' /\'|_ _/\'|\\\n') + chalk_1.default.red(' ')}
81
+ ${chalk_1.default.red(' ') + chalk_1.default.white(' \\___)-(___/ \n') + chalk_1.default.red(' ')}
82
+ ${chalk_1.default.red(' ')}
83
+ ${chalk_1.default.red(' ')}
84
+
85
+ ${chalk_1.default.bgRed.white(' GLASS HOUSE - ZERO PRIVACY ')}
86
+ ${chalk_1.default.red(' ')}`
87
+ };
88
+ return ghostArt[level] || ghostArt['Visible'];
89
+ }
90
+ static getProgressBar(score, total = 100) {
91
+ const filledBlocks = Math.round((score / total) * 20);
92
+ const emptyBlocks = 20 - filledBlocks;
93
+ const filled = '#'.repeat(filledBlocks);
94
+ const empty = '-'.repeat(emptyBlocks);
95
+ let color = chalk_1.default.green;
96
+ if (score < 40)
97
+ color = chalk_1.default.red;
98
+ else if (score < 60)
99
+ color = chalk_1.default.yellow;
100
+ else if (score < 80)
101
+ color = chalk_1.default.blue;
102
+ else if (score < 90)
103
+ color = chalk_1.default.cyan;
104
+ return color(filled) + chalk_1.default.gray(empty);
105
+ }
106
+ static getHeader() {
107
+ return `
108
+ ${chalk_1.default.cyan('')}
109
+ ${chalk_1.default.cyan('')} ${chalk_1.default.cyan('')}
110
+ ${chalk_1.default.cyan('')} ${chalk_1.default.white.bold(' PRIVACY GHOST SCORE - SOLANA PRIVACY ANALYSIS ')} ${chalk_1.default.cyan('')}
111
+ ${chalk_1.default.cyan('')} ${chalk_1.default.cyan('')}
112
+ ${chalk_1.default.cyan('')}`;
113
+ }
114
+ static getFooter() {
115
+ return `
116
+ ${chalk_1.default.gray('')}
117
+ ${chalk_1.default.gray('')} ${chalk_1.default.white.bold(' ANALYSIS COMPLETE - PRIVACY ASSESSMENT REPORT ')} ${chalk_1.default.gray('')}
118
+ ${chalk_1.default.gray('')}`;
119
+ }
120
+ static formatScore(score) {
121
+ const art = this.getGhostArt(score.ghostLevel);
122
+ const progressBar = this.getProgressBar(score.score);
123
+ let gradeColor = chalk_1.default.green;
124
+ if (score.grade === 'F' || score.grade === 'D')
125
+ gradeColor = chalk_1.default.red;
126
+ else if (score.grade === 'C')
127
+ gradeColor = chalk_1.default.yellow;
128
+ else if (score.grade === 'B')
129
+ gradeColor = chalk_1.default.blue;
130
+ else if (score.grade === 'A')
131
+ gradeColor = chalk_1.default.cyan;
132
+ else if (score.grade === 'A+')
133
+ gradeColor = chalk_1.default.magenta;
134
+ let levelColor = chalk_1.default.green;
135
+ if (score.ghostLevel === 'Glass House' || score.ghostLevel === 'Exposed')
136
+ levelColor = chalk_1.default.red;
137
+ else if (score.ghostLevel === 'Visible')
138
+ levelColor = chalk_1.default.yellow;
139
+ else if (score.ghostLevel === 'Translucent')
140
+ levelColor = chalk_1.default.blue;
141
+ else if (score.ghostLevel === 'Invisible')
142
+ levelColor = chalk_1.default.cyan;
143
+ return `
144
+ ${art}
145
+
146
+ ${chalk_1.default.white.bold('')}
147
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.bold('OVERALL PRIVACY SCORE:')} ${progressBar} ${chalk_1.default.bold.white(score.score + '/100')} ${' '.repeat(45 - score.score.toString().length)} ${chalk_1.default.white.bold('')}
148
+ ${chalk_1.default.white.bold('')}
149
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.bold('GRADE:')} ${gradeColor.bold(score.grade)} ${' '.repeat(8)} ${chalk_1.default.bold('STATUS:')} ${levelColor.bold(score.ghostLevel)} ${' '.repeat(35 - score.ghostLevel.length)} ${chalk_1.default.white.bold('')}
150
+ ${chalk_1.default.white.bold('')}
151
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.bold('PRIVACY METRICS BREAKDOWN:')} ${' '.repeat(45)} ${chalk_1.default.white.bold('')}
152
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.cyan(' Anonymity:')} ${this.getProgressBar(score.breakdown.anonymityScore)} ${chalk_1.default.white(score.breakdown.anonymityScore + '%')} ${' '.repeat(38)} ${chalk_1.default.white.bold('')}
153
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.blue(' Linkage:')} ${this.getProgressBar(score.breakdown.linkageScore)} ${chalk_1.default.white(score.breakdown.linkageScore + '%')} ${' '.repeat(40)} ${chalk_1.default.white.bold('')}
154
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.yellow(' Pattern:')} ${this.getProgressBar(score.breakdown.patternScore)} ${chalk_1.default.white(score.breakdown.patternScore + '%')} ${' '.repeat(40)} ${chalk_1.default.white.bold('')}
155
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.magenta(' Volume:')} ${this.getProgressBar(score.breakdown.volumeScore)} ${chalk_1.default.white(score.breakdown.volumeScore + '%')} ${' '.repeat(41)} ${chalk_1.default.white.bold('')}
156
+ ${chalk_1.default.white.bold('')} ${chalk_1.default.green(' Timing:')} ${this.getProgressBar(score.breakdown.timingScore)} ${chalk_1.default.white(score.breakdown.timingScore + '%')} ${' '.repeat(41)} ${chalk_1.default.white.bold('')}
157
+ ${chalk_1.default.white.bold('')}`;
158
+ }
159
+ static formatThreats(threats) {
160
+ if (threats.length === 0) {
161
+ return `
162
+ ${chalk_1.default.green('')}
163
+ ${chalk_1.default.green('')} ${chalk_1.default.white.bold(' EXCELLENT: No privacy threats detected - Your wallet is secure!')} ${' '.repeat(30)} ${chalk_1.default.green('')}
164
+ ${chalk_1.default.green('')}`;
165
+ }
166
+ let output = `
167
+ ${chalk_1.default.yellow('')}
168
+ ${chalk_1.default.yellow('')} ${chalk_1.default.white.bold(' PRIVACY THREATS DETECTED - ACTION REQUIRED')} ${' '.repeat(40)} ${chalk_1.default.yellow('')}
169
+ ${chalk_1.default.yellow('')}
170
+
171
+ `;
172
+ threats.forEach((threat, index) => {
173
+ let severityColor = chalk_1.default.red;
174
+ let severityIcon = '';
175
+ if (threat.severity === 'HIGH') {
176
+ severityColor = chalk_1.default.yellow;
177
+ severityIcon = '';
178
+ }
179
+ else if (threat.severity === 'MEDIUM') {
180
+ severityColor = chalk_1.default.blue;
181
+ severityIcon = '';
182
+ }
183
+ else if (threat.severity === 'LOW') {
184
+ severityColor = chalk_1.default.gray;
185
+ severityIcon = '';
186
+ }
187
+ output += `${chalk_1.default.white('[' + (index + 1) + '] ' + severityColor(severityIcon + ' ' + threat.severity + ' ' + threat.category) + ']')}
188
+ ${chalk_1.default.white('')} ${chalk_1.default.white(threat.description)} ${' '.repeat(85 - threat.description.length)} ${chalk_1.default.white('')}
189
+ ${chalk_1.default.white('')} ${chalk_1.default.gray(' Impact: ' + threat.recommendation)} ${' '.repeat(75 - threat.recommendation.length)} ${chalk_1.default.white('')}`;
190
+ if (threat.hopCount) {
191
+ output += `
192
+ ${chalk_1.default.white('')} ${chalk_1.default.yellow(' Network Analysis: ' + threat.hopCount + ' hop-links to exchange found')} ${' '.repeat(50)} ${chalk_1.default.white('')}`;
193
+ }
194
+ if (threat.fixCommand) {
195
+ output += `
196
+ ${chalk_1.default.white('')} ${chalk_1.default.cyan(' Solution: ' + threat.fixCommand)} ${' '.repeat(75 - threat.fixCommand.length)} ${chalk_1.default.white('')}`;
197
+ }
198
+ output += `
199
+ ${chalk_1.default.white('')}
200
+
201
+ `;
202
+ });
203
+ return output;
204
+ }
205
+ static formatRecommendations(recommendations) {
206
+ if (recommendations.length === 0) {
207
+ return '';
208
+ }
209
+ let output = `
210
+ ${chalk_1.default.cyan('')}
211
+ ${chalk_1.default.cyan('')} ${chalk_1.default.white.bold(' PRIVACY IMPROVEMENT RECOMMENDATIONS')} ${' '.repeat(50)} ${chalk_1.default.cyan('')}
212
+ ${chalk_1.default.cyan('')}
213
+
214
+ `;
215
+ recommendations.forEach((rec, index) => {
216
+ output += `${chalk_1.default.white('[' + (index + 1) + '] RECOMMENDATION]')}
217
+ ${chalk_1.default.white('')} ${chalk_1.default.white(rec)} ${' '.repeat(95 - rec.length)} ${chalk_1.default.white('')}
218
+ ${chalk_1.default.white('')}
219
+
220
+ `;
221
+ });
222
+ return output;
223
+ }
224
+ static formatGhostScore(score) {
225
+ const header = this.getHeader();
226
+ const scoreDisplay = this.formatScore(score);
227
+ const footer = this.getFooter();
228
+ const threats = this.formatThreats(score.threats);
229
+ const recommendations = this.formatRecommendations(score.recommendations);
230
+ return `${header}${scoreDisplay}
231
+
232
+ ${footer}
233
+
234
+ ${threats}${recommendations}`;
235
+ }
236
+ static formatJson(score) {
237
+ return JSON.stringify(score, null, 2);
238
+ }
239
+ static formatBadge(badge) {
240
+ let badgeColor = chalk_1.default.green;
241
+ if (badge.badgeType === 'GHOST')
242
+ badgeColor = chalk_1.default.gray;
243
+ else if (badge.badgeType === 'SHIELD')
244
+ badgeColor = chalk_1.default.blue;
245
+ else if (badge.badgeType === 'PHANTOM')
246
+ badgeColor = chalk_1.default.magenta;
247
+ else if (badge.badgeType === 'INVISIBLE')
248
+ badgeColor = chalk_1.default.cyan;
249
+ return `
250
+ ${badgeColor('')}
251
+ ${badgeColor('')} ${chalk_1.default.white.bold(' PRIVACY BADGE GENERATED - SHARE YOUR PRIVACY SCORE')} ${' '.repeat(35)} ${badgeColor('')}
252
+ ${badgeColor('')}
253
+
254
+ ${chalk_1.default.white('')}
255
+ ${chalk_1.default.white('')} ${chalk_1.default.bold('BADGE TYPE:')} ${badgeColor.bold(badge.badgeType)} ${' '.repeat(8)} ${chalk_1.default.bold('SCORE:')} ${chalk_1.default.white.bold(badge.score.toString())} ${' '.repeat(40)} ${chalk_1.default.white('')}
256
+ ${chalk_1.default.white('')} ${chalk_1.default.bold('PROOF HASH:')} ${chalk_1.default.gray(badge.proofData.substring(0, 20) + '...')} ${' '.repeat(45)} ${chalk_1.default.white('')}
257
+ ${chalk_1.default.white('')}
258
+
259
+ ${chalk_1.default.cyan('')}
260
+ ${chalk_1.default.cyan('')} ${chalk_1.default.white.bold(' SHAREABLE LINKS & EMBED CODES')} ${' '.repeat(55)} ${chalk_1.default.cyan('')}
261
+ ${chalk_1.default.cyan('')}
262
+
263
+ ${chalk_1.default.white(' MARKDOWN EMBED ')}
264
+ ${chalk_1.default.white('')} ${chalk_1.default.cyan(badge.markdownEmbed)} ${chalk_1.default.white('')}
265
+ ${chalk_1.default.white('')}
266
+
267
+ ${chalk_1.default.white(' HTML EMBED ')}
268
+ ${chalk_1.default.white('')} ${chalk_1.default.cyan(badge.htmlEmbed)} ${chalk_1.default.white('')}
269
+ ${chalk_1.default.white('')}
270
+
271
+ ${chalk_1.default.blue('')}
272
+ ${chalk_1.default.blue('')} ${chalk_1.default.white.bold(' SOCIAL MEDIA READY CONTENT')} ${' '.repeat(60)} ${chalk_1.default.blue('')}
273
+ ${chalk_1.default.blue('')}
274
+
275
+ ${chalk_1.default.white(' TWITTER POST ')}
276
+ ${chalk_1.default.white('')} ${chalk_1.default.blue(badge.twitterText)} ${chalk_1.default.white('')}
277
+ ${chalk_1.default.white('')}
278
+
279
+ ${chalk_1.default.white(' DISCORD POST ')}
280
+ ${chalk_1.default.white('')} ${chalk_1.default.blue(badge.discordText)} ${chalk_1.default.white('')}
281
+ ${chalk_1.default.white('')}`;
282
+ }
283
+ }
284
+ exports.GhostArt = GhostArt;
285
+ //# sourceMappingURL=ghost-art.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ghost-art.js","sourceRoot":"","sources":["../../../cli/utils/ghost-art.ts"],"names":[],"mappings":"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"}