@jobshimo/browser-link 0.1.0 → 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.
@@ -1,167 +0,0 @@
1
- import * as p from '@clack/prompts';
2
- import { INSTALLERS } from '../installers/index.js';
3
- import { installFor } from './install.js';
4
- import { formatDoctor, runDoctor } from './doctor.js';
5
- import { printExtensionInstructions } from './extension.js';
6
- import { runWelcome } from './welcome.js';
7
- import { runAbout } from './about.js';
8
- import { openUrl } from '../utils/open-url.js';
9
- const REPO_URL = 'https://github.com/jobshimo/browser-link';
10
- export const I18N_MENU = {
11
- en: {
12
- title: 'browser-link — setup',
13
- outro: 'See you around. Run `browser-link` any time to come back.',
14
- prompt: 'Pick an action',
15
- options: {
16
- register: 'Register browser-link with an MCP client',
17
- extension: 'Show Chrome extension install steps',
18
- doctor: 'Run doctor (diagnose current setup)',
19
- welcome: 'Show the welcome screen',
20
- about: 'About / Help — what is this and how it works',
21
- repo: 'Open the GitHub repository',
22
- quit: 'Quit',
23
- },
24
- statusRegistered: 'registered',
25
- statusNotRegistered: 'not registered',
26
- statusClientMissing: 'not detected',
27
- registerSuccessHint: 'Restart the MCP client so it picks up the new entry.',
28
- repoOpened: 'Opening the repository in your browser…',
29
- repoFallback: 'Could not open a browser automatically. Visit:',
30
- pickClient: 'Which MCP client do you want to register?',
31
- },
32
- es: {
33
- title: 'browser-link — configuración',
34
- outro: 'Hasta luego. Ejecutá `browser-link` cuando quieras volver.',
35
- prompt: 'Elegí una acción',
36
- options: {
37
- register: 'Registrar browser-link en un cliente MCP',
38
- extension: 'Ver pasos para instalar la extensión de Chrome',
39
- doctor: 'Diagnóstico (estado actual de la instalación)',
40
- welcome: 'Mostrar la pantalla de bienvenida',
41
- about: 'Información / ayuda — qué es esto y cómo funciona',
42
- repo: 'Abrir el repositorio en GitHub',
43
- quit: 'Salir',
44
- },
45
- statusRegistered: 'registrado',
46
- statusNotRegistered: 'no registrado',
47
- statusClientMissing: 'no detectado',
48
- registerSuccessHint: 'Reiniciá el cliente MCP para que tome la nueva entrada.',
49
- repoOpened: 'Abriendo el repositorio en tu navegador…',
50
- repoFallback: 'No se pudo abrir el navegador automáticamente. Visitá:',
51
- pickClient: '¿En qué cliente MCP querés registrar browser-link?',
52
- },
53
- };
54
- function clientStatusLine(t) {
55
- return INSTALLERS.map((inst) => {
56
- const d = inst.detect();
57
- const status = !d.installed
58
- ? t.statusClientMissing
59
- : d.registered
60
- ? t.statusRegistered
61
- : t.statusNotRegistered;
62
- return `${inst.displayName.padEnd(10)} ${status}`;
63
- }).join('\n');
64
- }
65
- async function pickClient(t) {
66
- // When only one installer is wired, skip the picker.
67
- if (INSTALLERS.length === 1)
68
- return INSTALLERS[0].id;
69
- const choice = (await p.select({
70
- message: t.pickClient,
71
- options: INSTALLERS.map((inst) => {
72
- const d = inst.detect();
73
- const hint = !d.installed
74
- ? t.statusClientMissing
75
- : d.registered
76
- ? t.statusRegistered
77
- : t.statusNotRegistered;
78
- return { value: inst.id, label: inst.displayName, hint };
79
- }),
80
- }));
81
- if (p.isCancel(choice))
82
- return null;
83
- return choice;
84
- }
85
- async function runAction(t, action, language) {
86
- switch (action) {
87
- case 'register': {
88
- const client = await pickClient(t);
89
- if (!client)
90
- return { keep: true, language };
91
- const report = installFor(client);
92
- if (report.installedClient) {
93
- p.log.success(`${report.displayName}: ${report.message}`);
94
- p.log.info(t.registerSuccessHint);
95
- }
96
- else {
97
- p.log.warn(`${report.displayName}: ${report.message}`);
98
- }
99
- return { keep: true, language };
100
- }
101
- case 'extension': {
102
- printExtensionInstructions();
103
- return { keep: true, language };
104
- }
105
- case 'doctor': {
106
- const report = await runDoctor();
107
- // Plain print — the doctor output has its own structure and is wide.
108
- console.log('');
109
- console.log(formatDoctor(report));
110
- console.log('');
111
- return { keep: true, language };
112
- }
113
- case 'welcome': {
114
- const result = await runWelcome({ initial: language, hideDismiss: true });
115
- if (result.action === 'quit')
116
- return { keep: false, language };
117
- return { keep: true, language: result.language };
118
- }
119
- case 'about': {
120
- await runAbout(language);
121
- return { keep: true, language };
122
- }
123
- case 'repo': {
124
- const ok = openUrl(REPO_URL);
125
- if (ok) {
126
- p.log.info(`${t.repoOpened}\n ${REPO_URL}`);
127
- }
128
- else {
129
- p.log.warn(`${t.repoFallback}\n ${REPO_URL}`);
130
- }
131
- return { keep: true, language };
132
- }
133
- case 'quit':
134
- return { keep: false, language };
135
- }
136
- }
137
- export async function runMenu(initialLanguage = 'en') {
138
- let language = initialLanguage;
139
- p.intro(I18N_MENU[language].title);
140
- while (true) {
141
- const t = I18N_MENU[language];
142
- p.note(clientStatusLine(t), 'MCP clients');
143
- const action = (await p.select({
144
- message: t.prompt,
145
- options: [
146
- { value: 'register', label: t.options.register },
147
- { value: 'extension', label: t.options.extension },
148
- { value: 'doctor', label: t.options.doctor },
149
- { value: 'welcome', label: t.options.welcome },
150
- { value: 'about', label: t.options.about },
151
- { value: 'repo', label: t.options.repo },
152
- { value: 'quit', label: t.options.quit },
153
- ],
154
- }));
155
- if (p.isCancel(action)) {
156
- p.outro(t.outro);
157
- return;
158
- }
159
- const result = await runAction(t, action, language);
160
- if (!result.keep) {
161
- p.outro(I18N_MENU[result.language].outro);
162
- return;
163
- }
164
- language = result.language;
165
- }
166
- }
167
- //# sourceMappingURL=menu.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/commands/menu.ts"],"names":[],"mappings":"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"}