UNPKG

@iosifnicolae22/remote-shell

Version:

Run any terminal application and control it remotely from your mobile device. Perfect for maxing out vibe coding sessions with Claude Code on the go!

2 lines (1 loc) • 1.09 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.TokenGenerator=void 0;const crypto_1=require("crypto");class TokenGenerator{tokens=new Map;generateToken(){const e=(0,crypto_1.randomBytes)(16).toString("hex");const t=new Date;const o=new Date(t.getTime()+864e5);const n={token:e,created:t,expires:o,used:!1};return this.tokens.set(e,n),setTimeout(()=>{this.tokens.delete(e)},864e5),n}validateToken(e){const t=this.tokens.get(e);return t?t.used||t.expires<new Date?(this.tokens.delete(e),null):t:null}markTokenAsUsed(e){const t=this.tokens.get(e);t&&(t.used=!0)}displayConnectionInfo(e,t=3001){const o=`ws://localhost:${t}/ws?token=${e}`;console.log("\nšŸ“± Mobile Connection Ready!"),console.log("═".repeat(50)),console.log("šŸ”— Connection URL:"),console.log(` ${o}`),console.log("═".repeat(50))}getActiveTokens(){const e=new Date;return Array.from(this.tokens.values()).filter(t=>!t.used&&t.expires>e)}cleanupExpiredTokens(){const e=new Date;for(const[t,o]of this.tokens.entries())o.expires<e&&this.tokens.delete(t)}}exports.TokenGenerator=TokenGenerator;