shogun-core 3.3.4 → 3.3.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shogun-core",
3
- "version": "3.3.4",
3
+ "version": "3.3.5",
4
4
  "description": "SHOGUN CORE - Core library for Shogun Ecosystem",
5
5
  "main": "./dist/src/index.js",
6
6
  "module": "./dist/src/index.js",
@@ -20,12 +20,6 @@
20
20
  "require": "./dist/ship/index.js",
21
21
  "default": "./dist/ship/index.js"
22
22
  },
23
- "./ship/implementation/*": {
24
- "types": "./dist/types/ship/implementation/*.d.ts",
25
- "import": "./dist/ship/implementation/*.js",
26
- "require": "./dist/ship/implementation/*.js",
27
- "default": "./dist/ship/implementation/*.js"
28
- },
29
23
  "./ship/interfaces/*": {
30
24
  "types": "./dist/types/ship/interfaces/*.d.ts",
31
25
  "import": "./dist/ship/interfaces/*.js",
@@ -46,7 +40,6 @@
46
40
  "wallet": "tsx ship/examples/wallet-cli.ts",
47
41
  "stealth": "tsx ship/examples/stealth-cli.ts",
48
42
  "storage": "tsx ship/examples/storage-cli.ts",
49
- "ephemeral": "tsx ship/examples/ephemeral-cli.ts",
50
43
  "vault": "tsx ship/examples/vault-cli.ts",
51
44
  "format": "prettier --write \"src/**/*.ts\"",
52
45
  "docs": "yarn typedoc --options typedoc.json",
@@ -78,6 +71,7 @@
78
71
  "constants-browserify": "^1.0.0",
79
72
  "crypto-browserify": "^3.12.0",
80
73
  "ethers": "^6.13.5",
74
+ "figlet": "^1.9.3",
81
75
  "form-data": "^4.0.4",
82
76
  "gun": "git+https://github.com/amark/gun.git",
83
77
  "keccak256": "^1.0.6",
@@ -1,234 +0,0 @@
1
- #!/usr/bin/env tsx
2
- "use strict";
3
- /**
4
- * SHIP-06 Ephemeral Chat - STANDALONE
5
- *
6
- * NO login/password required!
7
- *
8
- * Usage:
9
- * tsx ship/examples/ephemeral-cli.ts <nickname> <room>
10
- *
11
- * Example:
12
- * tsx ship/examples/ephemeral-cli.ts alice test-room
13
- */
14
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
15
- if (k2 === undefined) k2 = k;
16
- var desc = Object.getOwnPropertyDescriptor(m, k);
17
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
18
- desc = { enumerable: true, get: function() { return m[k]; } };
19
- }
20
- Object.defineProperty(o, k2, desc);
21
- }) : (function(o, m, k, k2) {
22
- if (k2 === undefined) k2 = k;
23
- o[k2] = m[k];
24
- }));
25
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
26
- Object.defineProperty(o, "default", { enumerable: true, value: v });
27
- }) : function(o, v) {
28
- o["default"] = v;
29
- });
30
- var __importStar = (this && this.__importStar) || (function () {
31
- var ownKeys = function(o) {
32
- ownKeys = Object.getOwnPropertyNames || function (o) {
33
- var ar = [];
34
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
35
- return ar;
36
- };
37
- return ownKeys(o);
38
- };
39
- return function (mod) {
40
- if (mod && mod.__esModule) return mod;
41
- var result = {};
42
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
43
- __setModuleDefault(result, mod);
44
- return result;
45
- };
46
- })();
47
- Object.defineProperty(exports, "__esModule", { value: true });
48
- const SHIP_06_1 = require("../implementation/SHIP_06");
49
- const readline = __importStar(require("readline"));
50
- // ============================================================================
51
- // GUN PEERS
52
- // ============================================================================
53
- const GUN_PEERS = [
54
- "https://v5g5jseqhgkp43lppgregcfbvi.srv.us/gun",
55
- "https://relay.shogun-eco.xyz/gun",
56
- "https://peer.wallie.io/gun",
57
- ];
58
- // ============================================================================
59
- // CLI
60
- // ============================================================================
61
- const rl = readline.createInterface({
62
- input: process.stdin,
63
- output: process.stdout,
64
- });
65
- function prompt(question) {
66
- return new Promise((resolve) => {
67
- rl.question(question, (answer) => {
68
- resolve(answer);
69
- });
70
- });
71
- }
72
- // ============================================================================
73
- // MAIN
74
- // ============================================================================
75
- async function main() {
76
- console.clear();
77
- console.log("šŸ—”ļø SHOGUN EPHEMERAL CHAT");
78
- console.log("=".repeat(70));
79
- const args = process.argv.slice(2);
80
- if (args.length < 2) {
81
- console.log("Usage: tsx ephemeral-cli.ts <nickname> <room>");
82
- console.log();
83
- console.log("Example:");
84
- console.log(" tsx ephemeral-cli.ts alice test-room");
85
- console.log();
86
- process.exit(1);
87
- }
88
- const [nickname, roomId] = args;
89
- try {
90
- console.log(`āœ… Welcome ${nickname}!`);
91
- console.log(`šŸ“” Connecting to room: ${roomId}...`);
92
- // Create ephemeral chat (NO login required!)
93
- const ephemeral = new SHIP_06_1.SHIP_06(GUN_PEERS, roomId, { debug: false });
94
- await ephemeral.connect();
95
- console.log(`āœ… Connected!`);
96
- console.log();
97
- // ========================================================================
98
- // EVENTS
99
- // ========================================================================
100
- ephemeral.onPeerSeen((address) => {
101
- console.log(`\nšŸ‘‹ Peer joined: ${address.substring(0, 12)}... (Total: ${ephemeral.getPeers().length})`);
102
- displayPrompt();
103
- });
104
- ephemeral.onPeerLeft((address) => {
105
- console.log(`\nšŸ‘‹ Peer left: ${address.substring(0, 12)}... (Total: ${ephemeral.getPeers().length})`);
106
- displayPrompt();
107
- });
108
- ephemeral.onMessage((msg) => {
109
- const time = new Date(msg.timestamp).toLocaleTimeString();
110
- const icon = msg.type === "broadcast" ? "šŸ“¢" : "šŸ“Ø";
111
- console.log(`\n${icon} [${time}] ${msg.from.substring(0, 8)}...: ${msg.content}`);
112
- displayPrompt();
113
- });
114
- // ========================================================================
115
- // CHAT
116
- // ========================================================================
117
- console.log("šŸ’¬ COMMANDS: /peers /direct /help /exit");
118
- console.log("=".repeat(70));
119
- console.log();
120
- let running = true;
121
- function displayPrompt() {
122
- if (running) {
123
- process.stdout.write(`\n${nickname}> `);
124
- }
125
- }
126
- displayPrompt();
127
- while (running) {
128
- const input = await prompt("");
129
- if (!input.trim()) {
130
- displayPrompt();
131
- continue;
132
- }
133
- // Commands
134
- if (input.startsWith("/")) {
135
- const command = input.toLowerCase();
136
- if (command === "/exit" || command === "/quit") {
137
- console.log("\nšŸ‘‹ Bye!");
138
- ephemeral.disconnect();
139
- running = false;
140
- break;
141
- }
142
- else if (command === "/peers") {
143
- const peers = ephemeral.getPeers();
144
- console.log(`\nšŸ‘„ Peers (${peers.length}):`);
145
- if (peers.length === 0) {
146
- console.log(" No peers");
147
- }
148
- else {
149
- peers.forEach((peer, i) => {
150
- console.log(` ${i + 1}. ${peer}`);
151
- });
152
- }
153
- console.log(); // Add blank line
154
- displayPrompt(); // Show prompt again
155
- continue; // Continue to next iteration
156
- }
157
- else if (command === "/debug") {
158
- console.log("\nšŸ” DEBUG INFO:");
159
- console.log(` My address: ${ephemeral.getAddress()}`);
160
- console.log(` Swarm ID: ${ephemeral.getSwarmId().substring(0, 32)}...`);
161
- console.log(` Peers: ${ephemeral.getPeers().length}`);
162
- console.log();
163
- displayPrompt();
164
- continue;
165
- }
166
- else if (command.startsWith("/direct")) {
167
- const peers = ephemeral.getPeers();
168
- if (peers.length === 0) {
169
- console.log("\nāŒ No peers");
170
- console.log();
171
- displayPrompt();
172
- continue;
173
- }
174
- else {
175
- console.log("\nšŸ‘„ Select peer:");
176
- peers.forEach((peer, i) => {
177
- console.log(` ${i + 1}. ${peer}`);
178
- });
179
- const peerIndex = await prompt("\nPeer number: ");
180
- const selectedPeer = peers[parseInt(peerIndex) - 1];
181
- if (selectedPeer) {
182
- const message = await prompt("Message: ");
183
- if (message.trim()) {
184
- await ephemeral.sendDirect(selectedPeer, message);
185
- console.log(`āœ… Sent to ${selectedPeer.substring(0, 8)}...`);
186
- }
187
- }
188
- else {
189
- console.log("āŒ Invalid");
190
- }
191
- console.log();
192
- displayPrompt();
193
- continue;
194
- }
195
- }
196
- else if (command === "/help") {
197
- console.log("\nšŸ’¬ COMMANDS:");
198
- console.log(" /peers - List peers");
199
- console.log(" /direct - Direct message");
200
- console.log(" /help - This help");
201
- console.log(" /exit - Exit");
202
- console.log();
203
- displayPrompt();
204
- continue;
205
- }
206
- else {
207
- console.log(`\nāŒ Unknown: ${command}`);
208
- displayPrompt();
209
- continue;
210
- }
211
- }
212
- // Send broadcast
213
- try {
214
- await ephemeral.sendBroadcast(input);
215
- const time = new Date().toLocaleTimeString();
216
- console.log(`šŸ“¢ [${time}] You: ${input}`);
217
- }
218
- catch (error) {
219
- console.error(`\nāŒ Error: ${error.message}`);
220
- }
221
- displayPrompt();
222
- }
223
- }
224
- catch (error) {
225
- console.error("\nāŒ Error:", error);
226
- process.exit(1);
227
- }
228
- rl.close();
229
- process.exit(0);
230
- }
231
- main().catch((error) => {
232
- console.error("Fatal error:", error);
233
- process.exit(1);
234
- });