keyfabe 0.2.0 → 0.4.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 (42) hide show
  1. package/README.md +23 -12
  2. package/dist/commands/clone.js +42 -15
  3. package/dist/commands/clone.js.map +1 -1
  4. package/dist/commands/delete.d.ts +1 -1
  5. package/dist/commands/delete.js +17 -3
  6. package/dist/commands/delete.js.map +1 -1
  7. package/dist/commands/doctor.js +28 -23
  8. package/dist/commands/doctor.js.map +1 -1
  9. package/dist/commands/export.js +2 -3
  10. package/dist/commands/export.js.map +1 -1
  11. package/dist/commands/import.js +5 -5
  12. package/dist/commands/import.js.map +1 -1
  13. package/dist/commands/list.js +8 -9
  14. package/dist/commands/list.js.map +1 -1
  15. package/dist/commands/read.js +34 -9
  16. package/dist/commands/read.js.map +1 -1
  17. package/dist/commands/rename.d.ts +1 -1
  18. package/dist/commands/rename.js +24 -4
  19. package/dist/commands/rename.js.map +1 -1
  20. package/dist/commands/setup.js +65 -56
  21. package/dist/commands/setup.js.map +1 -1
  22. package/dist/commands/show.d.ts +1 -1
  23. package/dist/commands/show.js +19 -10
  24. package/dist/commands/show.js.map +1 -1
  25. package/dist/commands/write.d.ts +1 -1
  26. package/dist/commands/write.js +15 -6
  27. package/dist/commands/write.js.map +1 -1
  28. package/dist/index.js +44 -5
  29. package/dist/index.js.map +1 -1
  30. package/dist/lib/card-ops.js +29 -16
  31. package/dist/lib/card-ops.js.map +1 -1
  32. package/dist/lib/display.js +7 -9
  33. package/dist/lib/display.js.map +1 -1
  34. package/dist/lib/parsers.d.ts +1 -0
  35. package/dist/lib/parsers.js +22 -0
  36. package/dist/lib/parsers.js.map +1 -1
  37. package/dist/lib/pm3.js +2 -2
  38. package/dist/lib/pm3.js.map +1 -1
  39. package/dist/lib/prompts.d.ts +2 -1
  40. package/dist/lib/prompts.js +25 -17
  41. package/dist/lib/prompts.js.map +1 -1
  42. package/package.json +8 -3
@@ -1,17 +1,37 @@
1
- import chalk from "chalk";
1
+ import * as p from "@clack/prompts";
2
2
  import { printFobNotFound } from "../lib/display.js";
3
- import { renameFob } from "../lib/store.js";
3
+ import { selectFob } from "../lib/prompts.js";
4
+ import { loadFobs, renameFob } from "../lib/store.js";
5
+ function handleCancel(value) {
6
+ if (p.isCancel(value)) {
7
+ p.cancel("Operation cancelled.");
8
+ process.exit(0);
9
+ }
10
+ }
4
11
  export async function rename(oldName, newName) {
12
+ if (!oldName) {
13
+ const fobs = await loadFobs();
14
+ if (fobs.length === 0) {
15
+ p.log.warn("No saved fobs. Use `keyfabe read` or `keyfabe clone` first.");
16
+ return false;
17
+ }
18
+ oldName = await selectFob(fobs, "Which fob to rename?");
19
+ }
20
+ if (!newName) {
21
+ const value = await p.text({ message: "New name", placeholder: "e.g. front-door" });
22
+ handleCancel(value);
23
+ newName = value;
24
+ }
5
25
  const result = await renameFob(oldName, newName);
6
26
  if (result === "not-found") {
7
27
  printFobNotFound(oldName);
8
28
  return false;
9
29
  }
10
30
  if (result === "name-taken") {
11
- console.log(chalk.red(`\nA fob named "${newName}" already exists. Delete it first or choose a different name.\n`));
31
+ p.log.error(`A fob named "${newName}" already exists. Delete it first or choose a different name.`);
12
32
  return false;
13
33
  }
14
- console.log(chalk.green(`\nRenamed "${oldName}" to "${newName}".\n`));
34
+ p.log.success(`Renamed "${oldName}" to "${newName}".`);
15
35
  return true;
16
36
  }
17
37
  //# sourceMappingURL=rename.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,OAAe;IACzD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEjD,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACzB,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,GAAG,CAAC,kBAAkB,OAAO,iEAAiE,CAAC,CACxG,CAAC;QACF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,OAAO,SAAS,OAAO,MAAM,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"rename.js","sourceRoot":"","sources":["../../src/commands/rename.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEtD,SAAS,YAAY,CAAC,KAAc;IAChC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAgB,EAAE,OAAgB;IAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACpF,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,OAAO,GAAG,KAAe,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,OAAiB,CAAC,CAAC;IAE3D,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACzB,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC1B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,OAAO,+DAA+D,CAAC,CAAC;QACpG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,OAAO,SAAS,OAAO,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1,158 +1,167 @@
1
- import chalk from "chalk";
2
- import ora from "ora";
1
+ import * as p from "@clack/prompts";
3
2
  import { printBrewInstall } from "../lib/display.js";
4
3
  import { buildFirmware, checkInstalled, execCommand, findBrewCache, flashFirmware, waitForDevice, } from "../lib/firmware.js";
5
4
  import { parseHwStatus, parseHwTune } from "../lib/parsers.js";
6
5
  import { detectPort, Pm3Error, pm3Exec } from "../lib/pm3.js";
7
6
  import { confirm } from "../lib/prompts.js";
8
7
  export async function setup() {
9
- console.log(chalk.bold("\nProxmark3 Firmware Setup Wizard\n"));
8
+ p.intro("Proxmark3 Firmware Setup");
10
9
  // Step 1: Prerequisites
11
- console.log(chalk.bold("Step 1: Checking prerequisites...\n"));
10
+ p.log.step("Step 1: Checking prerequisites...");
12
11
  const hasPm3 = await checkInstalled("pm3");
13
12
  if (!hasPm3) {
14
- console.log(chalk.red(" pm3 not found."));
13
+ p.log.error("pm3 not found.");
15
14
  printBrewInstall();
16
15
  return false;
17
16
  }
18
- console.log(chalk.green(" pm3: installed"));
17
+ p.log.success("pm3: installed");
19
18
  const hasMake = await checkInstalled("make");
20
19
  if (!hasMake) {
21
- console.log(chalk.red(" make not found. Install Xcode Command Line Tools: xcode-select --install"));
20
+ p.log.error("make not found. Install Xcode Command Line Tools: xcode-select --install");
22
21
  return false;
23
22
  }
24
- console.log(chalk.green(" make: installed"));
23
+ p.log.success("make: installed");
25
24
  const hasProxmark3 = await checkInstalled("proxmark3");
26
25
  if (!hasProxmark3) {
27
- console.log(chalk.red(" proxmark3 flasher not found."));
26
+ p.log.error("proxmark3 flasher not found.");
28
27
  printBrewInstall();
29
28
  return false;
30
29
  }
31
- console.log(chalk.green(" proxmark3: installed"));
30
+ p.log.success("proxmark3: installed");
32
31
  const port = await detectPort();
33
32
  if (!port) {
34
- console.log(chalk.red("\n No Proxmark3 detected. Plug in your device and try again."));
33
+ p.log.error("No Proxmark3 detected. Plug in your device and try again.");
35
34
  return false;
36
35
  }
37
- console.log(chalk.green(` device: ${port}`));
36
+ p.log.success(`device: ${port}`);
38
37
  // Step 2: Diagnose current state
39
- console.log(chalk.bold("\nStep 2: Checking current firmware...\n"));
40
- const diagSpinner = ora("Running hw status...").start();
38
+ p.log.step("Step 2: Checking current firmware...");
39
+ const diagSpinner = p.spinner();
40
+ diagSpinner.start("Running hw status...");
41
41
  try {
42
42
  const { stdout } = await pm3Exec("hw status");
43
43
  const status = parseHwStatus(stdout);
44
44
  if (status.connected) {
45
- diagSpinner.succeed("Firmware is already working.");
46
- console.log(chalk.green(` Firmware: ${status.firmwareVersion}`));
47
- console.log(chalk.green("\n No action needed. Device is ready to use."));
45
+ diagSpinner.stop("Firmware is already working.");
46
+ p.log.success(`Firmware: ${status.firmwareVersion}`);
47
+ p.log.success("No action needed. Device is ready to use.");
48
48
  return true;
49
49
  }
50
- diagSpinner.warn("Device found but firmware is incompatible. Proceeding with flash.");
50
+ diagSpinner.stop("Device found but firmware is incompatible. Proceeding with flash.");
51
+ p.log.warn("Device found but firmware is incompatible. Proceeding with flash.");
51
52
  }
52
53
  catch (err) {
53
54
  if (err instanceof Pm3Error && err.message.includes("not found")) {
54
- diagSpinner.fail("pm3 command failed.");
55
+ diagSpinner.stop("pm3 command failed.");
55
56
  return false;
56
57
  }
57
- diagSpinner.warn("Cannot communicate with device. Proceeding with flash.");
58
+ diagSpinner.stop("Cannot communicate with device. Proceeding with flash.");
59
+ p.log.warn("Cannot communicate with device. Proceeding with flash.");
58
60
  }
59
61
  // Step 3: Locate source
60
- console.log(chalk.bold("\nStep 3: Locating Proxmark3 source...\n"));
62
+ p.log.step("Step 3: Locating Proxmark3 source...");
61
63
  let tarball;
62
- const sourceSpinner = ora("Finding Homebrew cache...").start();
64
+ const sourceSpinner = p.spinner();
65
+ sourceSpinner.start("Finding Homebrew cache...");
63
66
  try {
64
67
  tarball = await findBrewCache();
65
- sourceSpinner.succeed(`Found: ${tarball}`);
68
+ sourceSpinner.stop(`Found: ${tarball}`);
66
69
  }
67
70
  catch {
68
- sourceSpinner.fail("Proxmark3 not installed via Homebrew.");
71
+ sourceSpinner.stop("Proxmark3 not installed via Homebrew.");
69
72
  printBrewInstall();
70
73
  return false;
71
74
  }
72
75
  // Step 4: Build firmware
73
- console.log(chalk.bold("\nStep 4: Building firmware...\n"));
76
+ p.log.step("Step 4: Building firmware...");
74
77
  const suffix = Math.random().toString(36).slice(2, 8);
75
78
  const sourceDir = `/tmp/pm3build-${suffix}`;
76
- const extractSpinner = ora("Extracting source...").start();
79
+ const extractSpinner = p.spinner();
80
+ extractSpinner.start("Extracting source...");
77
81
  try {
78
82
  await execCommand("mkdir", ["-p", sourceDir]);
79
83
  await execCommand("tar", ["xf", tarball, "-C", sourceDir, "--strip-components=1"]);
80
- extractSpinner.succeed("Source extracted.");
84
+ extractSpinner.stop("Source extracted.");
81
85
  }
82
86
  catch (err) {
83
- extractSpinner.fail(`Failed to extract source: ${err.message}`);
87
+ extractSpinner.stop(`Failed to extract source: ${err.message}`);
84
88
  return false;
85
89
  }
86
- const buildSpinner = ora("Building firmware (this may take ~30s)...").start();
90
+ const buildSpinner = p.spinner();
91
+ buildSpinner.start("Building firmware (this may take ~30s)...");
87
92
  try {
88
93
  await buildFirmware(sourceDir);
89
- buildSpinner.succeed("Firmware built successfully.");
94
+ buildSpinner.stop("Firmware built successfully.");
90
95
  }
91
96
  catch (err) {
92
- buildSpinner.fail(`Build failed: ${err.message}`);
97
+ buildSpinner.stop(`Build failed: ${err.message}`);
93
98
  return false;
94
99
  }
95
100
  // Step 5: Flash
96
- console.log(chalk.bold("\nStep 5: Flashing firmware...\n"));
101
+ p.log.step("Step 5: Flashing firmware...");
97
102
  const shouldFlash = await confirm("Ready to flash firmware. This will overwrite the device's current firmware. Continue?");
98
103
  if (!shouldFlash) {
99
- console.log(chalk.yellow(` Flash cancelled. Build artifacts remain at: ${sourceDir}`));
104
+ p.log.warn(`Flash cancelled. Build artifacts remain at: ${sourceDir}`);
100
105
  return false;
101
106
  }
102
107
  const currentPort = await detectPort();
103
108
  if (!currentPort) {
104
- console.log(chalk.red(" Device disconnected. Plug it back in and try again."));
109
+ p.log.error("Device disconnected. Plug it back in and try again.");
105
110
  return false;
106
111
  }
107
- const flashSpinner = ora("Flashing firmware...").start();
112
+ const flashSpinner = p.spinner();
113
+ flashSpinner.start("Flashing firmware...");
108
114
  try {
109
115
  await flashFirmware(currentPort, sourceDir);
110
- flashSpinner.succeed("Firmware flashed successfully.");
116
+ flashSpinner.stop("Firmware flashed successfully.");
111
117
  }
112
118
  catch (err) {
113
- flashSpinner.fail(`Flash failed: ${err.message}`);
114
- console.log(chalk.yellow(" If flash was interrupted, hold the button while plugging in to enter recovery mode."));
119
+ flashSpinner.stop(`Flash failed: ${err.message}`);
120
+ p.log.warn("If flash was interrupted, hold the button while plugging in to enter recovery mode.");
115
121
  return false;
116
122
  }
117
123
  // Step 6: Post-flash verification
118
- console.log(chalk.bold("\nStep 6: Verifying...\n"));
119
- const waitSpinner = ora("Waiting for device to reappear...").start();
124
+ p.log.step("Step 6: Verifying...");
125
+ const waitSpinner = p.spinner();
126
+ waitSpinner.start("Waiting for device to reappear...");
120
127
  const newPort = await waitForDevice(15_000);
121
128
  if (!newPort) {
122
- waitSpinner.fail("Device did not reappear after flash.");
123
- console.log(chalk.yellow(" Try unplugging and re-plugging the device."));
124
- console.log(chalk.yellow(" If it still doesn't work, hold the button while plugging in for recovery mode."));
129
+ waitSpinner.stop("Device did not reappear after flash.");
130
+ p.log.warn("Try unplugging and re-plugging the device.");
131
+ p.log.warn("If it still doesn't work, hold the button while plugging in for recovery mode.");
125
132
  return false;
126
133
  }
127
- waitSpinner.succeed(`Device found at ${newPort}`);
128
- const verifySpinner = ora("Checking communication...").start();
134
+ waitSpinner.stop(`Device found at ${newPort}`);
135
+ const verifySpinner = p.spinner();
136
+ verifySpinner.start("Checking communication...");
129
137
  try {
130
138
  const { stdout } = await pm3Exec("hw status");
131
139
  const status = parseHwStatus(stdout);
132
140
  if (!status.connected) {
133
- verifySpinner.fail("Communication still failing after flash.");
134
- console.log(chalk.yellow(" Try running `keyfabe setup` again."));
141
+ verifySpinner.stop("Communication still failing after flash.");
142
+ p.log.warn("Try running `keyfabe setup` again.");
135
143
  return false;
136
144
  }
137
- verifySpinner.succeed("Communication OK");
138
- console.log(chalk.green(` Firmware: ${status.firmwareVersion}`));
145
+ verifySpinner.stop("Communication OK");
146
+ p.log.success(`Firmware: ${status.firmwareVersion}`);
139
147
  }
140
148
  catch {
141
- verifySpinner.fail("Failed to verify communication.");
149
+ verifySpinner.stop("Failed to verify communication.");
142
150
  return false;
143
151
  }
144
- const tuneSpinner = ora("Checking antenna tuning...").start();
152
+ const tuneSpinner = p.spinner();
153
+ tuneSpinner.start("Checking antenna tuning...");
145
154
  try {
146
155
  const { stdout } = await pm3Exec("hw tune");
147
156
  const tune = parseHwTune(stdout);
148
- tuneSpinner.succeed("Antenna check complete");
149
- console.log(chalk.green(` LF antenna: ${tune.lfVoltage.toFixed(2)}V (125 kHz)`));
150
- console.log(chalk.green(` HF antenna: ${tune.hfVoltage.toFixed(2)}V (13.56 MHz)`));
157
+ tuneSpinner.stop("Antenna check complete");
158
+ p.log.success(`LF antenna: ${tune.lfVoltage.toFixed(2)}V (125 kHz)`);
159
+ p.log.success(`HF antenna: ${tune.hfVoltage.toFixed(2)}V (13.56 MHz)`);
151
160
  }
152
161
  catch {
153
- tuneSpinner.fail("Failed to check antenna tuning.");
162
+ tuneSpinner.stop("Failed to check antenna tuning.");
154
163
  }
155
- console.log(chalk.bold.green("\n Setup complete! Device is ready to use.\n"));
164
+ p.outro("Setup complete! Device is ready to use.");
156
165
  return true;
157
166
  }
158
167
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACH,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,KAAK;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAE/D,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC3C,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC,CAAC;QACrG,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEpD,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,CAAC;IAElD,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAC1F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAC/E,CAAC;IAED,wBAAwB;IACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;IAEpE,IAAI,OAAe,CAAC;IACpB,MAAM,aAAa,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QAChC,aAAa,CAAC,OAAO,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACL,aAAa,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC5D,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,yBAAyB;IACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,iBAAiB,MAAM,EAAE,CAAC;IAE5C,MAAM,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,IAAI,CAAC;QACD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACnF,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,cAAc,CAAC,IAAI,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,2CAA2C,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9E,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/B,YAAY,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,YAAY,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAE5D,MAAM,WAAW,GAAG,MAAM,OAAO,CAC7B,uFAAuF,CAC1F,CAAC;IACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,SAAS,EAAE,CAAC,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;QAChF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5C,YAAY,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,YAAY,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CACP,KAAK,CAAC,MAAM,CAAC,uFAAuF,CAAC,CACxG,CAAC;QACF,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kCAAkC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEpD,MAAM,WAAW,GAAG,GAAG,CAAC,mCAAmC,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kFAAkF,CAAC,CAAC,CAAC;QAC9G,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,WAAW,CAAC,OAAO,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAElD,MAAM,aAAa,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/D,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;YAClE,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,aAAa,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACL,aAAa,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,WAAW,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACxF,CAAC;IAAC,MAAM,CAAC;QACL,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAC/E,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACH,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,aAAa,EACb,aAAa,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,CAAC,KAAK,UAAU,KAAK;IACvB,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEpC,wBAAwB;IACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAEhD,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC9B,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEjC,MAAM,YAAY,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QAChB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC5C,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;IAChC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QACzE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC;IAEjC,iCAAiC;IACjC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,WAAW,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACjD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC;YAC3D,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QACtF,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IACpF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAI,GAAG,YAAY,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/D,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QAC3E,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACzE,CAAC;IAED,wBAAwB;IACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEnD,IAAI,OAAe,CAAC;IACpB,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAClC,aAAa,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,aAAa,EAAE,CAAC;QAChC,aAAa,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACL,aAAa,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAC5D,gBAAgB,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,yBAAyB;IACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,iBAAiB,MAAM,EAAE,CAAC;IAE5C,MAAM,cAAc,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACnC,cAAc,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC7C,IAAI,CAAC;QACD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC9C,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACnF,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,cAAc,CAAC,IAAI,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,YAAY,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAChE,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;QAC/B,YAAY,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,YAAY,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,gBAAgB;IAChB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAE3C,MAAM,WAAW,GAAG,MAAM,OAAO,CAC7B,uFAAuF,CAC1F,CAAC;IACF,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,SAAS,EAAE,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,WAAW,EAAE,CAAC;QACf,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACjC,YAAY,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC3C,IAAI,CAAC;QACD,MAAM,aAAa,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC5C,YAAY,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,YAAY,CAAC,IAAI,CAAC,iBAAkB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAClG,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kCAAkC;IAClC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,WAAW,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACzD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAE/C,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAClC,aAAa,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACjD,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACpB,aAAa,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC/D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACL,aAAa,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IAChC,WAAW,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,IAAI,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC3C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACrE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACL,WAAW,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACxD,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- export declare function show(name: string): Promise<boolean>;
1
+ export declare function show(name?: string): Promise<boolean>;
@@ -1,20 +1,29 @@
1
- import chalk from "chalk";
1
+ import * as p from "@clack/prompts";
2
2
  import { printFobNotFound } from "../lib/display.js";
3
- import { getFob } from "../lib/store.js";
3
+ import { selectFob } from "../lib/prompts.js";
4
+ import { getFob, loadFobs } from "../lib/store.js";
4
5
  export async function show(name) {
6
+ if (!name) {
7
+ const fobs = await loadFobs();
8
+ if (fobs.length === 0) {
9
+ p.log.warn("No saved fobs. Use `keyfabe read` or `keyfabe clone` first.");
10
+ return false;
11
+ }
12
+ name = await selectFob(fobs, "Which fob to show?");
13
+ }
5
14
  const fob = await getFob(name);
6
15
  if (!fob) {
7
16
  printFobNotFound(name);
8
17
  return false;
9
18
  }
10
- console.log(chalk.bold(`\n Name: ${fob.name}`));
11
- console.log(chalk.bold(` Type: ${fob.type}`));
12
- console.log(chalk.bold(` ID: ${fob.id}`));
13
- if (fob.encoding) {
14
- console.log(chalk.bold(` Encoding: ${fob.encoding}`));
15
- }
16
- console.log(chalk.bold(` Saved: ${fob.savedAt.slice(0, 10)}`));
17
- console.log();
19
+ const lines = [
20
+ `Name: ${fob.name}`,
21
+ `Type: ${fob.type}`,
22
+ `ID: ${fob.id}`,
23
+ ...(fob.encoding ? [`Encoding: ${fob.encoding}`] : []),
24
+ `Saved: ${fob.savedAt.slice(0, 10)}`,
25
+ ];
26
+ p.note(lines.join("\n"), "Fob Details");
18
27
  return true;
19
28
  }
20
29
  //# sourceMappingURL=show.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAY;IACnC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"show.js","sourceRoot":"","sources":["../../src/commands/show.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAa;IACpC,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG;QACV,aAAa,GAAG,CAAC,IAAI,EAAE;QACvB,aAAa,GAAG,CAAC,IAAI,EAAE;QACvB,aAAa,GAAG,CAAC,EAAE,EAAE;QACrB,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,aAAa,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;KAC1C,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- export declare function write(name: string): Promise<boolean>;
1
+ export declare function write(name?: string): Promise<boolean>;
@@ -1,10 +1,19 @@
1
- import chalk from "chalk";
1
+ import * as p from "@clack/prompts";
2
2
  import { writeAndVerify } from "../lib/card-ops.js";
3
3
  import { printFobNotFound } from "../lib/display.js";
4
4
  import { requireDevice } from "../lib/pm3.js";
5
- import { waitForEnter } from "../lib/prompts.js";
6
- import { getFob } from "../lib/store.js";
5
+ import { selectFob, waitForEnter } from "../lib/prompts.js";
6
+ import { getFob, loadFobs } from "../lib/store.js";
7
7
  export async function write(name) {
8
+ p.intro("Write Fob");
9
+ if (!name) {
10
+ const fobs = await loadFobs();
11
+ if (fobs.length === 0) {
12
+ p.log.warn("No saved fobs. Use `keyfabe read` or `keyfabe clone` first.");
13
+ return false;
14
+ }
15
+ name = await selectFob(fobs, "Which fob identity to write?");
16
+ }
8
17
  const fob = await getFob(name);
9
18
  if (!fob) {
10
19
  printFobNotFound(name);
@@ -12,14 +21,14 @@ export async function write(name) {
12
21
  }
13
22
  if (!(await requireDevice()))
14
23
  return false;
15
- console.log(chalk.bold(`\nWriting "${fob.name}" (${fob.type} ${fob.id})\n`));
24
+ p.log.info(`Writing "${fob.name}" (${fob.type} ${fob.id})`);
16
25
  await waitForEnter("Place a blank T55x7 fob on the antenna.");
17
26
  const success = await writeAndVerify({ type: fob.type, id: fob.id, encoding: fob.encoding });
18
27
  if (success) {
19
- console.log(chalk.green("\nWrite successful!\n"));
28
+ p.outro("Write successful!");
20
29
  return true;
21
30
  }
22
- console.log(chalk.red("\nWrite failed.\n"));
31
+ p.log.error("Write failed.");
23
32
  return false;
24
33
  }
25
34
  //# sourceMappingURL=write.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAY;IACpC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAE7E,MAAM,YAAY,CAAC,yCAAyC,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7F,IAAI,OAAO,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/commands/write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAa;IACrC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAErB,IAAI,CAAC,IAAI,EAAE,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;QACP,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,aAAa,EAAE,CAAC;QAAE,OAAO,KAAK,CAAC;IAE3C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5D,MAAM,YAAY,CAAC,yCAAyC,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAE7F,IAAI,OAAO,EAAE,CAAC;QACV,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACjB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env node
2
+ import * as p from "@clack/prompts";
2
3
  import { program } from "commander";
3
4
  import { clone } from "./commands/clone.js";
4
5
  import { deleteFob } from "./commands/delete.js";
@@ -19,6 +20,44 @@ function withExitCode(fn) {
19
20
  };
20
21
  }
21
22
  program.name("keyfabe").description("CLI tool for Proxmark3 keyfob cloning").version("0.1.0");
23
+ program.action(withExitCode(async () => {
24
+ if (!process.stdout.isTTY) {
25
+ program.help();
26
+ return true;
27
+ }
28
+ p.intro("keyfabe");
29
+ const action = await p.select({
30
+ message: "What would you like to do?",
31
+ options: [
32
+ { value: "clone", label: "Clone a keyfob", hint: "read + write + verify" },
33
+ { value: "read", label: "Read a card", hint: "identify a fob" },
34
+ { value: "write", label: "Write a saved identity", hint: "write to blank fob" },
35
+ { value: "list", label: "List saved fobs" },
36
+ { value: "doctor", label: "Health check", hint: "diagnose device" },
37
+ { value: "setup", label: "Firmware setup", hint: "flash Iceman firmware" },
38
+ ],
39
+ });
40
+ if (p.isCancel(action)) {
41
+ p.cancel("Goodbye!");
42
+ return true;
43
+ }
44
+ switch (action) {
45
+ case "clone":
46
+ return clone();
47
+ case "read":
48
+ return read();
49
+ case "write":
50
+ return write();
51
+ case "list":
52
+ return list();
53
+ case "doctor":
54
+ return doctor();
55
+ case "setup":
56
+ return setup();
57
+ default:
58
+ return true;
59
+ }
60
+ }));
22
61
  program
23
62
  .command("doctor")
24
63
  .description("Check device connection, firmware, and antenna health")
@@ -28,7 +67,7 @@ program.command("clone").description("Interactive guided clone flow (read + writ
28
67
  program
29
68
  .command("write")
30
69
  .description("Write a previously-saved identity to a blank fob")
31
- .argument("<name>", "name of the saved fob identity")
70
+ .argument("[name]", "name of the saved fob identity")
32
71
  .action(withExitCode(write));
33
72
  program
34
73
  .command("list")
@@ -38,18 +77,18 @@ program
38
77
  program
39
78
  .command("show")
40
79
  .description("Show details of a saved fob identity")
41
- .argument("<name>", "name of the saved fob identity")
80
+ .argument("[name]", "name of the saved fob identity")
42
81
  .action(withExitCode(show));
43
82
  program
44
83
  .command("rename")
45
84
  .description("Rename a saved fob identity")
46
- .argument("<old-name>", "current name")
47
- .argument("<new-name>", "new name")
85
+ .argument("[old-name]", "current name")
86
+ .argument("[new-name]", "new name")
48
87
  .action(withExitCode(rename));
49
88
  program
50
89
  .command("delete")
51
90
  .description("Delete a saved fob identity")
52
- .argument("<name>", "name of the saved fob identity")
91
+ .argument("[name]", "name of the saved fob identity")
53
92
  .action(withExitCode(deleteFob));
54
93
  program.command("export").description("Export all saved fob identities as JSON").action(withExitCode(exportFobs));
55
94
  program
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}