create-fhevm-example 1.2.2 → 1.3.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 (65) hide show
  1. package/README.md +74 -148
  2. package/dist/scripts/add-mode.d.ts +8 -0
  3. package/dist/scripts/add-mode.d.ts.map +1 -0
  4. package/dist/{add-mode.js → scripts/add-mode.js} +81 -58
  5. package/dist/scripts/builders.d.ts +20 -0
  6. package/dist/scripts/builders.d.ts.map +1 -0
  7. package/dist/scripts/builders.js +160 -0
  8. package/dist/{config.d.ts → scripts/config.d.ts} +24 -3
  9. package/dist/scripts/config.d.ts.map +1 -0
  10. package/dist/scripts/config.js +465 -0
  11. package/dist/scripts/doctor.d.ts +3 -0
  12. package/dist/scripts/doctor.d.ts.map +1 -0
  13. package/dist/scripts/doctor.js +157 -0
  14. package/dist/scripts/generate-config.d.ts +9 -0
  15. package/dist/scripts/generate-config.d.ts.map +1 -0
  16. package/dist/scripts/generate-config.js +315 -0
  17. package/dist/scripts/generate-docs.d.ts +9 -0
  18. package/dist/scripts/generate-docs.d.ts.map +1 -0
  19. package/dist/scripts/generate-docs.js +189 -0
  20. package/dist/scripts/index.d.ts +12 -0
  21. package/dist/scripts/index.d.ts.map +1 -0
  22. package/dist/scripts/index.js +360 -0
  23. package/dist/scripts/maintenance.d.ts +12 -0
  24. package/dist/scripts/maintenance.d.ts.map +1 -0
  25. package/dist/scripts/maintenance.js +320 -0
  26. package/dist/{ui.d.ts → scripts/ui.d.ts} +0 -1
  27. package/dist/scripts/ui.d.ts.map +1 -0
  28. package/dist/scripts/ui.js +197 -0
  29. package/dist/scripts/utils.d.ts +79 -0
  30. package/dist/scripts/utils.d.ts.map +1 -0
  31. package/dist/scripts/utils.js +504 -0
  32. package/package.json +24 -12
  33. package/dist/add-mode.d.ts +0 -21
  34. package/dist/add-mode.d.ts.map +0 -1
  35. package/dist/add-mode.js.map +0 -1
  36. package/dist/builders.d.ts +0 -30
  37. package/dist/builders.d.ts.map +0 -1
  38. package/dist/builders.js +0 -195
  39. package/dist/builders.js.map +0 -1
  40. package/dist/commands.d.ts +0 -19
  41. package/dist/commands.d.ts.map +0 -1
  42. package/dist/commands.js +0 -91
  43. package/dist/commands.js.map +0 -1
  44. package/dist/config.d.ts.map +0 -1
  45. package/dist/config.js +0 -403
  46. package/dist/config.js.map +0 -1
  47. package/dist/constants.d.ts +0 -16
  48. package/dist/constants.d.ts.map +0 -1
  49. package/dist/constants.js +0 -40
  50. package/dist/constants.js.map +0 -1
  51. package/dist/index.d.ts +0 -20
  52. package/dist/index.d.ts.map +0 -1
  53. package/dist/index.js +0 -337
  54. package/dist/index.js.map +0 -1
  55. package/dist/prompts.d.ts +0 -26
  56. package/dist/prompts.d.ts.map +0 -1
  57. package/dist/prompts.js +0 -79
  58. package/dist/prompts.js.map +0 -1
  59. package/dist/ui.d.ts.map +0 -1
  60. package/dist/ui.js +0 -155
  61. package/dist/ui.js.map +0 -1
  62. package/dist/utils.d.ts +0 -99
  63. package/dist/utils.d.ts.map +0 -1
  64. package/dist/utils.js +0 -285
  65. package/dist/utils.js.map +0 -1
package/dist/index.js DELETED
@@ -1,337 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * create-fhevm-example - CLI for creating FHEVM example projects
4
- *
5
- * Usage:
6
- * npx create-fhevm-example # Interactive mode
7
- * npx create-fhevm-example --example <name> # Create single example
8
- * npx create-fhevm-example --category <name> # Create category project
9
- * npx create-fhevm-example --add # Add to existing project
10
- *
11
- * This is the main entry point - similar to scripts/create.ts in main project.
12
- * Actual logic is split into:
13
- * - builders.ts (createSingleExample, createCategoryProject)
14
- * - ui.ts (prompts + commands)
15
- * - utils.ts (file operations + constants + utilities)
16
- * - config.ts (examples & categories)
17
- * - add-mode.ts (add to existing project)
18
- */
19
- import * as p from "@clack/prompts";
20
- import pc from "picocolors";
21
- import * as fs from "fs";
22
- import * as path from "path";
23
- import * as os from "os";
24
- // Config
25
- import { EXAMPLES, CATEGORIES } from "./config.js";
26
- // Utilities
27
- import { cloneTemplate, initSubmodule, log, ERROR_MESSAGES, validateExample, validateCategory, validateDirectoryNotExists, } from "./utils.js";
28
- // Builders
29
- import { createSingleExample, createCategoryProject } from "./builders.js";
30
- // UI (Prompts + Commands)
31
- import { promptSelectCategory, promptSelectExampleFromCategory, promptSelectCategoryProject, askInstallAndTest, runInstallAndTest, } from "./ui.js";
32
- // Add Mode
33
- import { runAddMode } from "./add-mode.js";
34
- // =============================================================================
35
- // INTERACTIVE MODE
36
- // =============================================================================
37
- /**
38
- * Main interactive mode flow
39
- * Guides user through project creation with prompts
40
- */
41
- async function runInteractiveMode() {
42
- console.clear();
43
- p.intro(pc.bgCyan(pc.black(" ⚡ FHEVM Example Factory ")));
44
- // Step 1: Choose mode (single example or category)
45
- const mode = await p.select({
46
- message: "What would you like to create?",
47
- options: [
48
- {
49
- value: "single",
50
- label: "Single example",
51
- hint: "One example contract with tests",
52
- },
53
- {
54
- value: "category",
55
- label: "Category project",
56
- hint: "Multiple examples by category",
57
- },
58
- ],
59
- });
60
- if (p.isCancel(mode)) {
61
- p.cancel("Operation cancelled.");
62
- process.exit(0);
63
- }
64
- let exampleName = "";
65
- let categoryName = "";
66
- let projectName = "";
67
- // Step 2: Select based on mode
68
- if (mode === "single") {
69
- const selectedCategory = await promptSelectCategory();
70
- if (p.isCancel(selectedCategory)) {
71
- p.cancel("Operation cancelled.");
72
- process.exit(0);
73
- }
74
- exampleName = await promptSelectExampleFromCategory(selectedCategory);
75
- if (p.isCancel(exampleName)) {
76
- p.cancel("Operation cancelled.");
77
- process.exit(0);
78
- }
79
- projectName = await p.text({
80
- message: "Project name:",
81
- placeholder: `my-${exampleName}-project`,
82
- defaultValue: `my-${exampleName}-project`,
83
- });
84
- }
85
- else {
86
- categoryName = await promptSelectCategoryProject();
87
- if (p.isCancel(categoryName)) {
88
- p.cancel("Operation cancelled.");
89
- process.exit(0);
90
- }
91
- projectName = await p.text({
92
- message: "Project name:",
93
- placeholder: `my-${categoryName}-project`,
94
- defaultValue: `my-${categoryName}-project`,
95
- });
96
- }
97
- if (p.isCancel(projectName)) {
98
- p.cancel("Operation cancelled.");
99
- process.exit(0);
100
- }
101
- // Step 3: Output directory
102
- const outputDir = await p.text({
103
- message: "Output directory:",
104
- placeholder: `./${projectName}`,
105
- defaultValue: `./${projectName}`,
106
- });
107
- if (p.isCancel(outputDir)) {
108
- p.cancel("Operation cancelled.");
109
- process.exit(0);
110
- }
111
- const resolvedOutput = path.resolve(process.cwd(), outputDir);
112
- if (fs.existsSync(resolvedOutput)) {
113
- p.log.error(`Directory already exists: ${resolvedOutput}`);
114
- process.exit(1);
115
- }
116
- // Step 4: Create project
117
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "fhevm-"));
118
- const s = p.spinner();
119
- try {
120
- s.start("Downloading template...");
121
- const tempRepoPath = await cloneTemplate(tempDir);
122
- s.message("Initializing submodules...");
123
- await initSubmodule(tempRepoPath);
124
- s.message("Scaffolding your confidential project...");
125
- if (mode === "single") {
126
- await createSingleExample(exampleName, resolvedOutput, tempRepoPath);
127
- }
128
- else {
129
- await createCategoryProject(categoryName, resolvedOutput, tempRepoPath);
130
- }
131
- s.stop("🎉 Project scaffolded successfully!");
132
- const relativePath = path.relative(process.cwd(), resolvedOutput);
133
- p.log.success(`📁 Created: ${pc.cyan(relativePath)}`);
134
- if (mode === "single") {
135
- const exampleConfig = EXAMPLES[exampleName];
136
- p.log.info(`📝 Example: ${pc.yellow(exampleConfig?.title || exampleName)}`);
137
- }
138
- else {
139
- const categoryConfig = CATEGORIES[categoryName];
140
- p.log.info(`📦 Category: ${pc.yellow(categoryConfig?.name || categoryName)}`);
141
- p.log.info(`📄 Contracts: ${pc.green(String(categoryConfig?.contracts.length || 0))}`);
142
- }
143
- await askInstallAndTest(resolvedOutput, relativePath);
144
- }
145
- catch (error) {
146
- s.stop("Failed to create project");
147
- p.log.error(error instanceof Error ? error.message : String(error));
148
- process.exit(1);
149
- }
150
- finally {
151
- if (fs.existsSync(tempDir)) {
152
- fs.rmSync(tempDir, { recursive: true, force: true });
153
- }
154
- }
155
- p.outro(pc.green("✅ Setup complete. Happy encrypting!"));
156
- }
157
- // =============================================================================
158
- // DIRECT MODE (CLI Arguments)
159
- // =============================================================================
160
- /**
161
- * Shows help information for CLI usage
162
- */
163
- function showHelp() {
164
- console.log(`
165
- ${pc.bgCyan(pc.black(pc.bold(" 🔐 create-fhevm-example ")))}
166
- ${pc.dim("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")}
167
-
168
- ${pc.cyan(pc.bold("📋 USAGE"))}
169
-
170
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.dim("→")} Interactive mode ${pc.yellow("(recommended)")}
171
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--example")} ${pc.yellow("<name>")} ${pc.dim("→")} Create single example
172
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--category")} ${pc.yellow("<name>")} ${pc.dim("→")} Create category project
173
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--add")} ${pc.dim("→")} Add to existing project
174
-
175
- ${pc.cyan(pc.bold("⚙️ OPTIONS"))}
176
-
177
- ${pc.green("--example")} ${pc.dim("<name>")} Create a single example project
178
- ${pc.green("--category")} ${pc.dim("<name>")} Create a category project
179
- ${pc.green("--add")} Add FHEVM to existing Hardhat project
180
- ${pc.green("--target")} ${pc.dim("<dir>")} Target directory for --add mode
181
- ${pc.green("--output")} ${pc.dim("<dir>")} Output directory
182
- ${pc.green("--install")} Auto-install dependencies
183
- ${pc.green("--test")} Auto-run tests (requires --install)
184
- ${pc.green("--help")}${pc.dim(", -h")} Show this help message
185
-
186
- ${pc.cyan(pc.bold("⚡ EXAMPLES"))}
187
-
188
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--example")} ${pc.yellow("fhe-counter")}
189
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--category")} ${pc.yellow("basic")} ${pc.green("--output")} ${pc.blue("./my-project")}
190
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--add")}
191
- ${pc.dim("$")} ${pc.white("npx create-fhevm-example")} ${pc.green("--example")} ${pc.yellow("fhe-counter")} ${pc.green("--install")} ${pc.green("--test")}
192
-
193
- ${pc.cyan(pc.bold("📦 AVAILABLE EXAMPLES"))}
194
-
195
- ${pc.dim(Object.keys(EXAMPLES).slice(0, 10).join(", "))}
196
- ${pc.dim("...")} and ${pc.yellow(String(Object.keys(EXAMPLES).length - 10))} more
197
-
198
- ${pc.cyan(pc.bold("📁 AVAILABLE CATEGORIES"))}
199
-
200
- ${Object.keys(CATEGORIES)
201
- .map((c) => pc.yellow(c))
202
- .join(", ")}
203
-
204
- ${pc.dim("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━")}
205
- ${pc.dim("📚 Documentation:")} ${pc.blue("https://github.com/NecipAkgz/fhevm-example-factory")}
206
- `);
207
- }
208
- /**
209
- * Parses CLI arguments into a key-value object
210
- */
211
- function parseArgs(args) {
212
- const parsed = {};
213
- for (let i = 0; i < args.length; i++) {
214
- const arg = args[i];
215
- if (arg.startsWith("--")) {
216
- const key = arg.slice(2);
217
- const nextArg = args[i + 1];
218
- if (nextArg && !nextArg.startsWith("--")) {
219
- parsed[key] = nextArg;
220
- i++;
221
- }
222
- else {
223
- parsed[key] = true;
224
- }
225
- }
226
- else if (arg === "-h") {
227
- parsed["help"] = true;
228
- }
229
- }
230
- return parsed;
231
- }
232
- /**
233
- * Handles direct mode (CLI with arguments, non-interactive)
234
- */
235
- async function runDirectMode(args) {
236
- const parsedArgs = parseArgs(args);
237
- if (parsedArgs["help"]) {
238
- showHelp();
239
- return;
240
- }
241
- // Handle --add mode
242
- if (parsedArgs["add"]) {
243
- const targetDir = parsedArgs["target"];
244
- await runAddMode(targetDir);
245
- return;
246
- }
247
- const exampleName = parsedArgs["example"];
248
- const categoryName = parsedArgs["category"];
249
- const outputDir = parsedArgs["output"];
250
- const shouldInstall = parsedArgs["install"] === true;
251
- // Validation
252
- if (!exampleName && !categoryName) {
253
- log.error(ERROR_MESSAGES.EXAMPLE_REQUIRED);
254
- showHelp();
255
- process.exit(1);
256
- }
257
- if (exampleName && categoryName) {
258
- log.error(ERROR_MESSAGES.BOTH_SPECIFIED);
259
- process.exit(1);
260
- }
261
- const mode = exampleName ? "example" : "category";
262
- const name = (exampleName || categoryName);
263
- try {
264
- if (mode === "example") {
265
- validateExample(name);
266
- }
267
- else {
268
- validateCategory(name);
269
- }
270
- }
271
- catch (error) {
272
- log.error(error instanceof Error ? error.message : String(error));
273
- log.message("Available: " +
274
- Object.keys(mode === "example" ? EXAMPLES : CATEGORIES).join(", "));
275
- process.exit(1);
276
- }
277
- const defaultOutput = mode === "example" ? `./my-${name}-project` : `./my-${name}-examples`;
278
- const output = outputDir || defaultOutput;
279
- const resolved = path.resolve(process.cwd(), output);
280
- try {
281
- validateDirectoryNotExists(resolved);
282
- }
283
- catch (error) {
284
- log.error(error instanceof Error ? error.message : String(error));
285
- process.exit(1);
286
- }
287
- // Create project
288
- const tempDir = fs.mkdtempSync(path.join(os.tmpdir(), "fhevm-"));
289
- try {
290
- log.info(`Creating ${mode}: ${name}`);
291
- log.dim("Downloading template...");
292
- const tempRepoPath = await cloneTemplate(tempDir);
293
- log.dim("Initializing submodules...");
294
- await initSubmodule(tempRepoPath);
295
- log.dim("Creating project...");
296
- if (mode === "example") {
297
- await createSingleExample(name, resolved, tempRepoPath);
298
- }
299
- else {
300
- await createCategoryProject(name, resolved, tempRepoPath);
301
- }
302
- log.success(`✓ Created: ${output}`);
303
- if (shouldInstall) {
304
- log.dim("\nInstalling dependencies...");
305
- await runInstallAndTest(resolved);
306
- }
307
- else {
308
- log.dim(`\nNext: cd ${output} && npm install && npm run compile && npm run test`);
309
- }
310
- }
311
- catch (error) {
312
- log.error(error instanceof Error ? error.message : String(error));
313
- process.exit(1);
314
- }
315
- finally {
316
- if (fs.existsSync(tempDir)) {
317
- fs.rmSync(tempDir, { recursive: true, force: true });
318
- }
319
- }
320
- }
321
- // =============================================================================
322
- // MAIN ENTRY POINT
323
- // =============================================================================
324
- async function main() {
325
- const args = process.argv.slice(2);
326
- if (args.length > 0) {
327
- await runDirectMode(args);
328
- }
329
- else {
330
- await runInteractiveMode();
331
- }
332
- }
333
- main().catch((error) => {
334
- log.error("Fatal error: " + (error instanceof Error ? error.message : String(error)));
335
- process.exit(1);
336
- });
337
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts DELETED
@@ -1,26 +0,0 @@
1
- /**
2
- * Interactive Prompts
3
- *
4
- * Category and example selection prompts for interactive mode.
5
- * Similar structure to main project's interactive flows.
6
- */
7
- /**
8
- * Counts how many examples exist in each category
9
- */
10
- export declare function countExamplesPerCategory(): Record<string, number>;
11
- /**
12
- * Prompts user to select a category
13
- * Returns the selected category name
14
- */
15
- export declare function promptSelectCategory(): Promise<string | symbol>;
16
- /**
17
- * Prompts user to select an example from a specific category
18
- * Returns the selected example name
19
- */
20
- export declare function promptSelectExampleFromCategory(category: string): Promise<string | symbol>;
21
- /**
22
- * Prompts user to select a category project
23
- * Returns the selected category key (lowercase)
24
- */
25
- export declare function promptSelectCategoryProject(): Promise<string | symbol>;
26
- //# sourceMappingURL=prompts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjE;AAMD;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAoBrE;AAED;;;GAGG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAe1B;AAED;;;GAGG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAS5E"}
package/dist/prompts.js DELETED
@@ -1,79 +0,0 @@
1
- /**
2
- * Interactive Prompts
3
- *
4
- * Category and example selection prompts for interactive mode.
5
- * Similar structure to main project's interactive flows.
6
- */
7
- import * as p from "@clack/prompts";
8
- import { EXAMPLES, CATEGORIES } from "./config.js";
9
- import { CATEGORY_ICON, CATEGORY_ORDER } from "./utils.js";
10
- // =============================================================================
11
- // Category Helpers
12
- // =============================================================================
13
- /**
14
- * Counts how many examples exist in each category
15
- */
16
- export function countExamplesPerCategory() {
17
- const counts = {};
18
- for (const config of Object.values(EXAMPLES)) {
19
- counts[config.category] = (counts[config.category] || 0) + 1;
20
- }
21
- return counts;
22
- }
23
- // =============================================================================
24
- // Selection Prompts
25
- // =============================================================================
26
- /**
27
- * Prompts user to select a category
28
- * Returns the selected category name
29
- */
30
- export async function promptSelectCategory() {
31
- const categoryCounts = countExamplesPerCategory();
32
- // Get all categories, prioritizing CATEGORY_ORDER, then alphabetically sorted others
33
- const allCategories = Object.keys(categoryCounts);
34
- const orderedCategories = [
35
- ...CATEGORY_ORDER.filter((cat) => allCategories.includes(cat)),
36
- ...allCategories.filter((cat) => !CATEGORY_ORDER.includes(cat)).sort(),
37
- ];
38
- return p.select({
39
- message: "Select a category:",
40
- options: orderedCategories.map((category) => ({
41
- value: category,
42
- label: `${CATEGORY_ICON} ${category}`,
43
- hint: `${categoryCounts[category] || 0} example${categoryCounts[category] !== 1 ? "s" : ""}`,
44
- })),
45
- });
46
- }
47
- /**
48
- * Prompts user to select an example from a specific category
49
- * Returns the selected example name
50
- */
51
- export async function promptSelectExampleFromCategory(category) {
52
- const categoryExamples = Object.entries(EXAMPLES)
53
- .filter(([, config]) => config.category === category)
54
- .map(([key, config]) => ({
55
- value: key,
56
- label: key,
57
- hint: config.description.slice(0, 80) +
58
- (config.description.length > 80 ? "..." : ""),
59
- }));
60
- return p.select({
61
- message: `Select an example from ${category}:`,
62
- options: categoryExamples,
63
- });
64
- }
65
- /**
66
- * Prompts user to select a category project
67
- * Returns the selected category key (lowercase)
68
- */
69
- export async function promptSelectCategoryProject() {
70
- return p.select({
71
- message: "Select a category:",
72
- options: Object.entries(CATEGORIES).map(([key, config]) => ({
73
- value: key,
74
- label: `${CATEGORY_ICON} ${config.name}`,
75
- hint: `${config.contracts.length} contracts`,
76
- })),
77
- });
78
- }
79
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
package/dist/ui.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMjE;AAMD;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAoBrE;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAe1B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CAS5E;AAMD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAOzD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAiBf"}
package/dist/ui.js DELETED
@@ -1,155 +0,0 @@
1
- /**
2
- * User Interface - Prompts & Commands
3
- *
4
- * Interactive prompts and command execution for CLI.
5
- * Combines functionality from prompts.ts and commands.ts
6
- */
7
- import * as p from "@clack/prompts";
8
- import pc from "picocolors";
9
- import { EXAMPLES, CATEGORIES } from "./config.js";
10
- import { CATEGORY_ICON, CATEGORY_ORDER, runCommand, extractTestResults, } from "./utils.js";
11
- // =============================================================================
12
- // Category Helpers
13
- // =============================================================================
14
- /**
15
- * Counts how many examples exist in each category
16
- */
17
- export function countExamplesPerCategory() {
18
- const counts = {};
19
- for (const config of Object.values(EXAMPLES)) {
20
- counts[config.category] = (counts[config.category] || 0) + 1;
21
- }
22
- return counts;
23
- }
24
- // =============================================================================
25
- // Selection Prompts
26
- // =============================================================================
27
- /**
28
- * Prompts user to select a category
29
- */
30
- export async function promptSelectCategory() {
31
- const categoryCounts = countExamplesPerCategory();
32
- // Get all categories, prioritizing CATEGORY_ORDER, then alphabetically sorted others
33
- const allCategories = Object.keys(categoryCounts);
34
- const orderedCategories = [
35
- ...CATEGORY_ORDER.filter((cat) => allCategories.includes(cat)),
36
- ...allCategories.filter((cat) => !CATEGORY_ORDER.includes(cat)).sort(),
37
- ];
38
- return p.select({
39
- message: "Select a category:",
40
- options: orderedCategories.map((category) => ({
41
- value: category,
42
- label: `${CATEGORY_ICON} ${category}`,
43
- hint: `${categoryCounts[category] || 0} example${categoryCounts[category] !== 1 ? "s" : ""}`,
44
- })),
45
- });
46
- }
47
- /**
48
- * Prompts user to select an example from a specific category
49
- */
50
- export async function promptSelectExampleFromCategory(category) {
51
- const categoryExamples = Object.entries(EXAMPLES)
52
- .filter(([, config]) => config.category === category)
53
- .map(([key, config]) => ({
54
- value: key,
55
- label: key,
56
- hint: config.description.slice(0, 80) +
57
- (config.description.length > 80 ? "..." : ""),
58
- }));
59
- return p.select({
60
- message: `Select an example from ${category}:`,
61
- options: categoryExamples,
62
- });
63
- }
64
- /**
65
- * Prompts user to select a category project
66
- */
67
- export async function promptSelectCategoryProject() {
68
- return p.select({
69
- message: "Select a category:",
70
- options: Object.entries(CATEGORIES).map(([key, config]) => ({
71
- value: key,
72
- label: `${CATEGORY_ICON} ${config.name}`,
73
- hint: `${config.contracts.length} contracts`,
74
- })),
75
- });
76
- }
77
- // =============================================================================
78
- // Install & Test Commands
79
- // =============================================================================
80
- /**
81
- * Runs npm install, compile, and test in the project directory
82
- */
83
- export async function runInstallAndTest(projectPath) {
84
- const steps = [
85
- {
86
- name: "Installing dependencies",
87
- cmd: "npm",
88
- args: ["install"],
89
- showOutput: false,
90
- },
91
- {
92
- name: "Compiling contracts",
93
- cmd: "npm",
94
- args: ["run", "compile"],
95
- showOutput: false,
96
- },
97
- {
98
- name: "Running tests",
99
- cmd: "npm",
100
- args: ["run", "test"],
101
- showOutput: true,
102
- },
103
- ];
104
- for (const step of steps) {
105
- const s = p.spinner();
106
- s.start(step.name + "...");
107
- try {
108
- const output = await runCommand(step.cmd, step.args, projectPath);
109
- if (step.showOutput) {
110
- const testResults = extractTestResults(output);
111
- s.stop(testResults
112
- ? pc.green(`✓ ${step.name} - ${testResults}`)
113
- : pc.green(`✓ ${step.name} completed`));
114
- }
115
- else {
116
- s.stop(pc.green(`✓ ${step.name} completed`));
117
- }
118
- }
119
- catch (error) {
120
- s.stop(pc.red(`✗ ${step.name} failed`));
121
- if (error instanceof Error) {
122
- p.log.error(error.message);
123
- }
124
- throw new Error(`${step.name} failed`);
125
- }
126
- }
127
- p.log.success(pc.green("🔐 All encryption tests passed!"));
128
- }
129
- /**
130
- * Shows quick start commands for the created project
131
- */
132
- export function showQuickStart(relativePath) {
133
- p.note(`${pc.dim("$")} cd ${relativePath}\n${pc.dim("$")} npm install\n${pc.dim("$")} npm run compile\n${pc.dim("$")} npm run test`, "🚀 Quick Start");
134
- }
135
- /**
136
- * Asks user if they want to install and test
137
- */
138
- export async function askInstallAndTest(resolvedOutput, relativePath) {
139
- const shouldInstall = await p.confirm({
140
- message: "Install dependencies and run tests?",
141
- initialValue: false,
142
- });
143
- if (p.isCancel(shouldInstall)) {
144
- showQuickStart(relativePath);
145
- return;
146
- }
147
- if (shouldInstall) {
148
- p.log.message("");
149
- await runInstallAndTest(resolvedOutput);
150
- }
151
- else {
152
- showQuickStart(relativePath);
153
- }
154
- }
155
- //# sourceMappingURL=ui.js.map
package/dist/ui.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,aAAa,EACb,cAAc,EACd,UAAU,EACV,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,cAAc,GAAG,wBAAwB,EAAE,CAAC;IAElD,qFAAqF;IACrF,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,iBAAiB,GAAG;QACxB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC9D,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;KACvE,CAAC;IAEF,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC5C,KAAK,EAAE,QAAQ;YACf,KAAK,EAAE,GAAG,aAAa,IAAI,QAAQ,EAAE;YACrC,IAAI,EAAE,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WACpC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EACzC,EAAE;SACH,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,QAAgB;IAEhB,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;QACvB,KAAK,EAAE,GAAG;QACV,KAAK,EAAE,GAAG;QACV,IAAI,EACF,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC,CAAC;IAEN,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,0BAA0B,QAAQ,GAAG;QAC9C,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,oBAAoB;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1D,KAAK,EAAE,GAAG;YACV,KAAK,EAAE,GAAG,aAAa,IAAI,MAAM,CAAC,IAAI,EAAE;YACxC,IAAI,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,YAAY;SAC7C,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,KAAK,GAAG;QACZ;YACE,IAAI,EAAE,yBAAyB;YAC/B,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,CAAC,SAAS,CAAC;YACjB,UAAU,EAAE,KAAK;SAClB;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC;YACxB,UAAU,EAAE,KAAK;SAClB;QACD;YACE,IAAI,EAAE,eAAe;YACrB,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACrB,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;QAE3B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YAElE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC/C,CAAC,CAAC,IAAI,CACJ,WAAW;oBACT,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,MAAM,WAAW,EAAE,CAAC;oBAC7C,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,CACzC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,CAAC,CAAC,IAAI,CACJ,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,YAAY,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,GAAG,CACtE,GAAG,CACJ,qBAAqB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAChD,gBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,cAAsB,EACtB,YAAoB;IAEpB,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QACpC,OAAO,EAAE,qCAAqC;QAC9C,YAAY,EAAE,KAAK;KACpB,CAAC,CAAC;IAEH,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QAC9B,cAAc,CAAC,YAAY,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAClB,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}