own-term 0.1.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 (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -0
  3. package/bin/cli.d.ts +3 -0
  4. package/bin/cli.d.ts.map +1 -0
  5. package/bin/cli.js +29 -0
  6. package/bin/cli.js.map +1 -0
  7. package/bin/commands/index.d.ts +3 -0
  8. package/bin/commands/index.d.ts.map +1 -0
  9. package/bin/commands/index.js +390 -0
  10. package/bin/commands/index.js.map +1 -0
  11. package/bin/config.d.ts +10 -0
  12. package/bin/config.d.ts.map +1 -0
  13. package/bin/config.js +160 -0
  14. package/bin/config.js.map +1 -0
  15. package/bin/plugins/loader.d.ts +11 -0
  16. package/bin/plugins/loader.d.ts.map +1 -0
  17. package/bin/plugins/loader.js +89 -0
  18. package/bin/plugins/loader.js.map +1 -0
  19. package/bin/plugins/plugin_api.d.ts +15 -0
  20. package/bin/plugins/plugin_api.d.ts.map +1 -0
  21. package/bin/plugins/plugin_api.js +27 -0
  22. package/bin/plugins/plugin_api.js.map +1 -0
  23. package/bin/render/effects.d.ts +22 -0
  24. package/bin/render/effects.d.ts.map +1 -0
  25. package/bin/render/effects.js +57 -0
  26. package/bin/render/effects.js.map +1 -0
  27. package/bin/render/renderer.d.ts +71 -0
  28. package/bin/render/renderer.d.ts.map +1 -0
  29. package/bin/render/renderer.js +175 -0
  30. package/bin/render/renderer.js.map +1 -0
  31. package/bin/shell/engine.d.ts +53 -0
  32. package/bin/shell/engine.d.ts.map +1 -0
  33. package/bin/shell/engine.js +242 -0
  34. package/bin/shell/engine.js.map +1 -0
  35. package/bin/shell/router.d.ts +27 -0
  36. package/bin/shell/router.d.ts.map +1 -0
  37. package/bin/shell/router.js +80 -0
  38. package/bin/shell/router.js.map +1 -0
  39. package/bin/shell/welcome.d.ts +4 -0
  40. package/bin/shell/welcome.d.ts.map +1 -0
  41. package/bin/shell/welcome.js +162 -0
  42. package/bin/shell/welcome.js.map +1 -0
  43. package/bin/themes/default.d.ts +10 -0
  44. package/bin/themes/default.d.ts.map +1 -0
  45. package/bin/themes/default.js +61 -0
  46. package/bin/themes/default.js.map +1 -0
  47. package/bin/types.d.ts +107 -0
  48. package/bin/types.d.ts.map +1 -0
  49. package/bin/types.js +6 -0
  50. package/bin/types.js.map +1 -0
  51. package/package.json +70 -0
  52. package/templates/default/termfolio.config.ts +37 -0
  53. package/templates/hacker/termfolio.config.ts +34 -0
  54. package/templates/minimal/termfolio.config.ts +23 -0
@@ -0,0 +1,390 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerCoreCommands = registerCoreCommands;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const inquirer_1 = __importDefault(require("inquirer"));
9
+ const open_1 = __importDefault(require("open"));
10
+ const welcome_1 = require("../shell/welcome");
11
+ // ─── Shared helpers ──────────────────────────────────────────────────────────
12
+ function sleep(ms) {
13
+ return new Promise((r) => setTimeout(r, ms));
14
+ }
15
+ function termWidth() {
16
+ return Math.min(process.stdout.columns || 90, 100);
17
+ }
18
+ function divider(color, char = "─") {
19
+ return chalk_1.default.hex(color)(char.repeat(termWidth()));
20
+ }
21
+ function sectionLabel(text, color) {
22
+ const upper = text.toUpperCase();
23
+ const line = chalk_1.default.hex(color)("─".repeat(Math.max(0, termWidth() - upper.length - 3)));
24
+ return `${chalk_1.default.hex(color).bold(upper)} ${line}`;
25
+ }
26
+ // ─── Register all core commands ──────────────────────────────────────────────
27
+ function registerCoreCommands(config, context) {
28
+ const commands = {};
29
+ const theme = context.theme;
30
+ // ── Colour shortcuts ──────────────────────────────────────────────────────
31
+ const cyan = (s) => chalk_1.default.hex(theme.primary)(s);
32
+ const purple = (s) => chalk_1.default.hex(theme.secondary)(s);
33
+ const gold = (s) => chalk_1.default.hex(theme.accent)(s);
34
+ const green = (s) => chalk_1.default.hex(theme.success)(s);
35
+ const orange = (s) => chalk_1.default.hex(theme.warning)(s);
36
+ const dim = (s) => chalk_1.default.hex(theme.dim)(s);
37
+ const white = (s) => chalk_1.default.white(s);
38
+ const bold = (s) => chalk_1.default.bold(s);
39
+ // ── HELP ──────────────────────────────────────────────────────────────────
40
+ commands["help"] = async () => {
41
+ context.render.newline();
42
+ console.log(sectionLabel("Commands Reference", theme.primary));
43
+ context.render.newline();
44
+ const categories = [
45
+ {
46
+ label: "Portfolio",
47
+ items: [
48
+ { cmd: "about", desc: "Who I am & my background" },
49
+ { cmd: "projects", desc: "Browse & explore projects" },
50
+ { cmd: "skills", desc: "Technical skills & stack" },
51
+ { cmd: "contact", desc: "Social links & email" },
52
+ { cmd: "resume", desc: "Open resume PDF" },
53
+ ],
54
+ },
55
+ {
56
+ label: "System",
57
+ items: [
58
+ { cmd: "theme", arg: "[name]", desc: "Switch color theme" },
59
+ { cmd: "clear", desc: "Clear the terminal" },
60
+ { cmd: "help", desc: "Show this reference" },
61
+ { cmd: "exit", desc: "Exit the portfolio" },
62
+ ],
63
+ },
64
+ ];
65
+ for (const cat of categories) {
66
+ console.log(` ${purple("·")} ${dim(cat.label.toUpperCase())} ${dim("─".repeat(40))}`);
67
+ context.render.newline();
68
+ for (const item of cat.items) {
69
+ const cmdStr = cyan(bold(item.cmd.padEnd(12)));
70
+ const argStr = item.arg ? gold(item.arg.padEnd(8)) : " ";
71
+ const descStr = dim(item.desc);
72
+ console.log(` ${cmdStr} ${argStr} ${descStr}`);
73
+ }
74
+ context.render.newline();
75
+ }
76
+ // Footer hints
77
+ console.log(divider(theme.dim));
78
+ console.log(` ${dim("Tab")} autocomplete ${dim("·")} ${dim("↑↓")} history ${dim("·")} ${cyan("Ctrl+C")} exit`);
79
+ context.render.newline();
80
+ };
81
+ // ── ABOUT ─────────────────────────────────────────────────────────────────
82
+ commands["about"] = async () => {
83
+ context.render.newline();
84
+ console.log(sectionLabel(config.name, theme.primary));
85
+ context.render.newline();
86
+ const w = termWidth();
87
+ const leftW = 24;
88
+ const rightW = w - leftW - 3;
89
+ // Left column: meta stats
90
+ const leftLines = [
91
+ bold(white(config.name)),
92
+ cyan(config.title || "Developer"),
93
+ "",
94
+ `${dim("status")} ${green("● available")}`,
95
+ `${dim("theme")} ${gold(config.theme || "dark")}`,
96
+ `${dim("projects")} ${white(String(config.projects.length))}`,
97
+ `${dim("skills")} ${white(String(Object.values(config.skills).flat().filter(Boolean).length))}`,
98
+ ];
99
+ // Right column: bio text word-wrapped
100
+ const bio = config.about || "No bio configured.";
101
+ const words = bio.split(" ");
102
+ const rightLines = [];
103
+ let currentLine = "";
104
+ for (const word of words) {
105
+ if ((currentLine + " " + word).trim().length > rightW) {
106
+ rightLines.push(currentLine.trim());
107
+ currentLine = word;
108
+ }
109
+ else {
110
+ currentLine += (currentLine ? " " : "") + word;
111
+ }
112
+ }
113
+ if (currentLine)
114
+ rightLines.push(currentLine.trim());
115
+ const totalRows = Math.max(leftLines.length, rightLines.length + 2);
116
+ for (let i = 0; i < totalRows; i++) {
117
+ const left = leftLines[i] ?? "";
118
+ const rightRaw = i === 0
119
+ ? dim("About Me")
120
+ : i === 1
121
+ ? dim("─".repeat(Math.min(40, rightW)))
122
+ : (rightLines[i - 2] ?? "");
123
+ const right = i >= 2 ? white(rightRaw) : rightRaw;
124
+ const leftVis = left.replace(/\x1b\[[0-9;]*m/g, "").length;
125
+ const leftPad = " ".repeat(Math.max(0, leftW - leftVis));
126
+ const sep = chalk_1.default.hex(theme.dim)("│");
127
+ console.log(` ${left}${leftPad} ${sep} ${right}`);
128
+ }
129
+ context.render.newline();
130
+ // Interest tags
131
+ if (config.skills) {
132
+ const allTech = Object.values(config.skills)
133
+ .flat()
134
+ .filter(Boolean)
135
+ .map((item) => (typeof item === "object" && item !== null && "name" in item ? item.name : String(item)))
136
+ .slice(0, 8);
137
+ if (allTech.length > 0) {
138
+ const tags = allTech
139
+ .map((t) => chalk_1.default.bgHex("#0a1a2a").hex(theme.primary)(` ${t} `))
140
+ .join(" ");
141
+ console.log(` ${tags}`);
142
+ context.render.newline();
143
+ }
144
+ }
145
+ console.log(divider(theme.dim));
146
+ context.render.newline();
147
+ };
148
+ // ── PROJECTS ──────────────────────────────────────────────────────────────
149
+ commands["projects"] = async () => {
150
+ context.render.newline();
151
+ console.log(sectionLabel("Projects", theme.primary));
152
+ context.render.newline();
153
+ if (config.projects.length === 0) {
154
+ context.render.warning("No projects found in config");
155
+ return;
156
+ }
157
+ // Interactive picker
158
+ const { chosen } = await inquirer_1.default.prompt([
159
+ {
160
+ type: "list",
161
+ name: "chosen",
162
+ message: `${cyan("?")} Select a project ${dim("(↑↓ navigate, Enter to view)")}`,
163
+ choices: config.projects.map((p, i) => ({
164
+ name: `${dim(`${String(i + 1).padStart(2, "0")}`)} ` +
165
+ `${cyan(bold(p.name.padEnd(22)))} ` +
166
+ `${p.status === "active" ? green("● active") :
167
+ p.status === "wip" ? orange("● wip") :
168
+ dim("○ archived")}`,
169
+ value: p,
170
+ short: p.name,
171
+ })),
172
+ prefix: "",
173
+ },
174
+ ]);
175
+ context.render.newline();
176
+ // Detail card
177
+ const p = chosen;
178
+ const w = termWidth() - 4;
179
+ // Top border
180
+ console.log(` ${cyan("╭" + "─".repeat(w) + "╮")}`);
181
+ const line = (content) => {
182
+ // eslint-disable-next-line no-control-regex
183
+ const vis = content.replace(/\x1b\[[0-9;]*m/g, "").length;
184
+ const pad = " ".repeat(Math.max(0, w - vis - 2));
185
+ console.log(` ${cyan("│")} ${content}${pad} ${cyan("│")}`);
186
+ };
187
+ line(`${bold(white(p.name))} ${p.status === "active" ? green("● active") :
188
+ p.status === "wip" ? orange("● wip") :
189
+ dim("○ archived")}`);
190
+ line(dim("─".repeat(w - 2)));
191
+ line(white(p.desc || ""));
192
+ if (p.repo)
193
+ line(`${dim("repo")} ${cyan(p.repo)}`);
194
+ if (p.url)
195
+ line(`${dim("url")} ${cyan(p.url)}`);
196
+ if (p.tags && p.tags.length > 0) {
197
+ const tags = p.tags.map((t) => `${purple("#")}${dim(t)}`).join(" ");
198
+ line(tags);
199
+ }
200
+ console.log(` ${cyan("╰" + "─".repeat(w) + "╯")}`);
201
+ context.render.newline();
202
+ if (p.repo) {
203
+ const { doOpen } = await inquirer_1.default.prompt([
204
+ {
205
+ type: "confirm",
206
+ name: "doOpen",
207
+ message: `${cyan("?")} Open in browser?`,
208
+ default: false,
209
+ prefix: "",
210
+ },
211
+ ]);
212
+ if (doOpen)
213
+ await (0, open_1.default)(p.repo);
214
+ }
215
+ console.log(divider(theme.dim));
216
+ context.render.newline();
217
+ };
218
+ // ── SKILLS ────────────────────────────────────────────────────────────────
219
+ commands["skills"] = async () => {
220
+ context.render.newline();
221
+ console.log(sectionLabel("Skills & Technologies", theme.primary));
222
+ context.render.newline();
223
+ const cats = Object.entries(config.skills).filter(([, v]) => v && v.length > 0);
224
+ if (cats.length === 0) {
225
+ context.render.warning("No skills found in config");
226
+ return;
227
+ }
228
+ for (const [category, items] of cats) {
229
+ if (!items)
230
+ continue;
231
+ const catName = category.charAt(0).toUpperCase() + category.slice(1);
232
+ // Category label
233
+ console.log(` ${purple(bold(catName))} ${dim("─".repeat(Math.max(0, termWidth() - catName.length - 4)))}`);
234
+ // Check if items have levels (object format) or are plain strings
235
+ for (const item of items) {
236
+ if (typeof item === "object" && item !== null && "name" in item) {
237
+ // Progress bar style
238
+ const skill = item;
239
+ const level = skill.level ?? 75;
240
+ const barW = 28;
241
+ const filled = Math.round((level / 100) * barW);
242
+ const bar = chalk_1.default.hex(theme.primary)("█".repeat(filled)) +
243
+ dim("░".repeat(barW - filled));
244
+ const pct = cyan(bold(`${level}%`));
245
+ console.log(` ${white(String(skill.name).padEnd(18))} ${bar} ${pct}`);
246
+ await sleep(30);
247
+ }
248
+ else {
249
+ // Pill-style for plain strings
250
+ const text = String(item);
251
+ process.stdout.write(` ${chalk_1.default.bgHex("#0d1525").hex(theme.primary)(` ${text} `)} `);
252
+ }
253
+ }
254
+ // If we wrote pills (no newline), end the line
255
+ if (typeof items[0] === "string") {
256
+ process.stdout.write("\n");
257
+ }
258
+ context.render.newline();
259
+ }
260
+ console.log(divider(theme.dim));
261
+ context.render.newline();
262
+ };
263
+ // ── CONTACT ───────────────────────────────────────────────────────────────
264
+ commands["contact"] = async () => {
265
+ context.render.newline();
266
+ console.log(sectionLabel("Get In Touch", theme.primary));
267
+ context.render.newline();
268
+ const links = config.links;
269
+ const iconMap = {
270
+ email: "📧",
271
+ github: "🐙",
272
+ linkedin: "💼",
273
+ twitter: "🐦",
274
+ website: "🌐",
275
+ };
276
+ const entries = Object.entries(links).filter(([, v]) => v);
277
+ if (entries.length === 0) {
278
+ context.render.warning("No contact links configured");
279
+ return;
280
+ }
281
+ const w = termWidth() - 4;
282
+ console.log(` ${cyan("╭" + "─".repeat(w) + "╮")}`);
283
+ for (const [key, value] of entries) {
284
+ const icon = iconMap[key] || "🔗";
285
+ const label = dim(key.charAt(0).toUpperCase() + key.slice(1));
286
+ // eslint-disable-next-line no-control-regex
287
+ const content = `${icon} ${label.replace(/\x1b\[[0-9;]*m/g, "").padEnd(10).replace(/(.{10})/, `${label}${" ".repeat(10 - key.length)}`)} ${cyan(value || "")}`;
288
+ // simpler version:
289
+ const row = `${icon} ${dim((key + ":").padEnd(12))} ${cyan(value || "")}`;
290
+ // eslint-disable-next-line no-control-regex
291
+ const rowVis = row.replace(/\x1b\[[0-9;]*m/g, "").length;
292
+ const pad = " ".repeat(Math.max(0, w - rowVis - 1));
293
+ console.log(` ${cyan("│")} ${row}${pad}${cyan("│")}`);
294
+ void content; // suppress unused
295
+ }
296
+ console.log(` ${cyan("╰" + "─".repeat(w) + "╯")}`);
297
+ context.render.newline();
298
+ console.log(` ${dim("tip:")} type ${cyan("open github")} · ${cyan("open email")} · ${cyan("open linkedin")} to open links`);
299
+ context.render.newline();
300
+ console.log(divider(theme.dim));
301
+ context.render.newline();
302
+ };
303
+ // ── OPEN (link opener shortcut) ───────────────────────────────────────────
304
+ commands["open"] = async (args) => {
305
+ const target = args[0]?.toLowerCase();
306
+ if (!target) {
307
+ context.render.info("Usage: open [github|linkedin|email|website|twitter]");
308
+ return;
309
+ }
310
+ const url = config.links[target];
311
+ if (!url) {
312
+ context.render.error(`No link configured for '${target}'`);
313
+ return;
314
+ }
315
+ const openUrl = target === "email" ? `mailto:${url}` : url;
316
+ context.render.info(`Opening ${target}: ${url}`);
317
+ try {
318
+ await (0, open_1.default)(openUrl);
319
+ context.render.success("Opened in browser!");
320
+ }
321
+ catch {
322
+ context.render.error("Could not open URL");
323
+ }
324
+ };
325
+ // ── RESUME ────────────────────────────────────────────────────────────────
326
+ commands["resume"] = async () => {
327
+ if (config.resume) {
328
+ context.render.info(`Opening resume: ${config.resume}`);
329
+ try {
330
+ await (0, open_1.default)(config.resume);
331
+ context.render.success("Resume opened in your browser!");
332
+ }
333
+ catch {
334
+ context.render.error("Failed to open resume");
335
+ }
336
+ }
337
+ else {
338
+ context.render.warning("No resume URL configured — add 'resume' to your termfolio.config");
339
+ }
340
+ };
341
+ // ── CLEAR ─────────────────────────────────────────────────────────────────
342
+ commands["clear"] = async () => {
343
+ context.render.clear();
344
+ await (0, welcome_1.showWelcome)(config, context);
345
+ };
346
+ // ── THEME ─────────────────────────────────────────────────────────────────
347
+ commands["theme"] = async (args) => {
348
+ const validThemes = ["dark", "light", "hacker", "neo", "dracula", "nordic"];
349
+ const themeName = args[0];
350
+ context.render.newline();
351
+ console.log(sectionLabel("Themes", theme.primary));
352
+ context.render.newline();
353
+ if (!themeName) {
354
+ // Show theme gallery
355
+ const themeData = [
356
+ { name: "dark", colors: ["#00E5FF", "#B347FF", "#FFD166"], desc: "Cyan & purple on black" },
357
+ { name: "light", colors: ["#0066CC", "#9933FF", "#FF6600"], desc: "Clean minimal light" },
358
+ { name: "hacker", colors: ["#00FF00", "#00AA00", "#FFFF00"], desc: "Matrix green on black" },
359
+ { name: "neo", colors: ["#FF0080", "#00FFFF", "#FFFF00"], desc: "Neon pink & cyan" },
360
+ { name: "dracula", colors: ["#FF79C6", "#BD93F9", "#FFB86C"], desc: "Classic Dracula" },
361
+ { name: "nordic", colors: ["#88C0D0", "#81A1C1", "#EBCB8B"], desc: "Muted Nordic tones" },
362
+ ];
363
+ for (const t of themeData) {
364
+ const isActive = (config.theme || "dark") === t.name;
365
+ const swatch = chalk_1.default.hex(t.colors[0])("██") +
366
+ chalk_1.default.hex(t.colors[1])("██") +
367
+ chalk_1.default.hex(t.colors[2])("██");
368
+ const marker = isActive ? cyan(bold(" ← active")) : "";
369
+ console.log(` ${swatch} ${isActive ? cyan(bold(t.name.padEnd(10))) : white(t.name.padEnd(10))} ${dim(t.desc)}${marker}`);
370
+ }
371
+ context.render.newline();
372
+ console.log(` ${dim("Usage:")} ${cyan("theme dark")} ${dim("·")} ${cyan("theme hacker")} ${dim("etc.")}`);
373
+ console.log(` ${dim("Tip: Set")} ${gold("theme")} ${dim("in your termfolio.config.ts to persist")}`);
374
+ }
375
+ else if (validThemes.includes(themeName)) {
376
+ context.render.success(`Theme '${themeName}' selected!`);
377
+ context.render.info("Restart own-term or update your config to apply.");
378
+ console.log(` ${dim("Add")} ${gold(`theme: "${themeName}"`)} ${dim("to termfolio.config.ts")}`);
379
+ }
380
+ else {
381
+ context.render.error(`Unknown theme: '${themeName}'`);
382
+ context.render.info(`Valid themes: ${validThemes.join(", ")}`);
383
+ }
384
+ context.render.newline();
385
+ console.log(divider(theme.dim));
386
+ context.render.newline();
387
+ };
388
+ return commands;
389
+ }
390
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { TermfolioConfig } from "./types";
2
+ /**
3
+ * Load configuration from user's termfolio.config file
4
+ */
5
+ export declare function loadConfig(configPath?: string): Promise<TermfolioConfig>;
6
+ /**
7
+ * Save configuration to file
8
+ */
9
+ export declare function getConfigTemplate(): string;
10
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;GAEG;AACH,wBAAsB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4B9E;AA2DD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAgC1C"}
package/bin/config.js ADDED
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadConfig = loadConfig;
37
+ exports.getConfigTemplate = getConfigTemplate;
38
+ const fs_1 = require("fs");
39
+ const path_1 = require("path");
40
+ /**
41
+ * Load configuration from user's termfolio.config file
42
+ */
43
+ async function loadConfig(configPath) {
44
+ const cwd = process.cwd();
45
+ // Try multiple config file locations
46
+ const possiblePaths = [
47
+ configPath,
48
+ (0, path_1.join)(cwd, "termfolio.config.ts"),
49
+ (0, path_1.join)(cwd, "termfolio.config.js"),
50
+ (0, path_1.join)(cwd, "termfolio.config.json"),
51
+ (0, path_1.join)(cwd, ".termfolio", "config.ts"),
52
+ (0, path_1.join)(cwd, ".termfolio", "config.js"),
53
+ ].filter(Boolean);
54
+ for (const path of possiblePaths) {
55
+ if ((0, fs_1.existsSync)(path)) {
56
+ try {
57
+ // Dynamic import for ES modules and TypeScript
58
+ const configModule = await Promise.resolve(`${(0, path_1.resolve)(path)}`).then(s => __importStar(require(s)));
59
+ const config = configModule.default || configModule;
60
+ return validateConfig(config);
61
+ }
62
+ catch (error) {
63
+ console.error(`Error loading config from ${path}:`, error);
64
+ }
65
+ }
66
+ }
67
+ // Return default config if no config file found
68
+ return getDefaultConfig();
69
+ }
70
+ /**
71
+ * Validate and normalize configuration
72
+ */
73
+ function validateConfig(config) {
74
+ if (!config.name) {
75
+ throw new Error("Config must include 'name' field");
76
+ }
77
+ return {
78
+ name: config.name,
79
+ promptStyle: config.promptStyle || "dashboard",
80
+ title: config.title || "Developer",
81
+ asciiLogo: config.asciiLogo,
82
+ about: config.about,
83
+ theme: config.theme || "dark",
84
+ links: config.links || {},
85
+ projects: config.projects || [],
86
+ skills: config.skills || {},
87
+ resume: config.resume,
88
+ plugins: config.plugins || [],
89
+ customCommands: config.customCommands || {},
90
+ };
91
+ }
92
+ /**
93
+ * Default configuration for demo purposes
94
+ */
95
+ function getDefaultConfig() {
96
+ return {
97
+ name: "Own-term",
98
+ title: "Terminal Portfolio Framework",
99
+ asciiLogo: "OWN-TERM",
100
+ promptStyle: "dashboard",
101
+ about: "A beautiful, interactive terminal portfolio framework. Create your own with 'npx create-own-term'!",
102
+ theme: "dark",
103
+ links: {
104
+ github: "https://github.com/Biki-dev/own-term",
105
+ email: "Bikikalitadev@gmail.com",
106
+ },
107
+ projects: [
108
+ {
109
+ name: "Own-term",
110
+ desc: "Reusable terminal portfolio framework",
111
+ repo: "https://github.com/yourusername/own-term",
112
+ tags: ["cli", "node", "typescript"],
113
+ status: "active",
114
+ },
115
+ ],
116
+ skills: {
117
+ languages: ["TypeScript", "JavaScript", "Python"],
118
+ frameworks: ["Node.js", "React"],
119
+ tools: ["Git", "Docker", "VS Code"],
120
+ },
121
+ plugins: [],
122
+ };
123
+ }
124
+ /**
125
+ * Save configuration to file
126
+ */
127
+ function getConfigTemplate() {
128
+ return `export default {
129
+ name: "Your Name",
130
+ title: "Your Title",
131
+ asciiLogo: "YOUR-NAME",
132
+ about: "A brief description about yourself and what you do.",
133
+ theme: "dark", // dark, light, or hacker
134
+ links: {
135
+ github: "https://github.com/yourusername",
136
+ linkedin: "https://linkedin.com/in/yourusername",
137
+ twitter: "https://twitter.com/yourusername",
138
+ email: "you@example.com",
139
+ website: "https://yourwebsite.com"
140
+ },
141
+ projects: [
142
+ {
143
+ name: "Project Name",
144
+ desc: "Project description",
145
+ repo: "https://github.com/yourusername/project",
146
+ tags: ["tag1", "tag2"],
147
+ status: "active" // active, archived, or wip
148
+ }
149
+ ],
150
+ skills: {
151
+ languages: ["JavaScript", "TypeScript", "Python"],
152
+ frameworks: ["React", "Node.js", "Express"],
153
+ tools: ["Git", "Docker", "VS Code"],
154
+ databases: ["PostgreSQL", "MongoDB"]
155
+ },
156
+ resume: "https://yourwebsite.com/resume.pdf"
157
+ };
158
+ `;
159
+ }
160
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Plugin, PluginAPI, CommandContext } from "../types";
2
+ import { Router } from "../shell/router";
3
+ /**
4
+ * Load and register plugins
5
+ */
6
+ export declare function loadPlugins(pluginNames: string[], context: CommandContext, router: Router): Promise<void>;
7
+ /**
8
+ * Create a plugin helper for easier plugin development
9
+ */
10
+ export declare function createPlugin(name: string, version: string, register: (api: PluginAPI) => void): Plugin;
11
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC;;GAEG;AACH,wBAAsB,WAAW,CAC7B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAQf;AAsCD;;GAEG;AACH,wBAAgB,YAAY,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,GACnC,MAAM,CAMR"}