ubugeeei 1.1.0 → 2.0.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.
package/README.md CHANGED
@@ -11,10 +11,15 @@ creator of <a href="https://github.com/chibivue-land/chibivue" target="_blank">c
11
11
 
12
12
  writing: <a href="https://wtrclred.io" target="_blank">wtrclred.io</a> (blog), <a href="https://github.com/ubugeei/reading-vuejs-core-vapor" target="_blank">reading-vuejs-core-vapor</a>,
13
13
 
14
- ---
14
+ try it.
15
+ ```shell
16
+ npx ubugeeei
17
+ ```
15
18
 
16
- My Sponsors 💚\
17
- <img src="https://raw.githubusercontent.com/ubugeeei/sponsors/main/sponsors.png" width="320">
19
+ <div align="center">
18
20
 
19
- please sponsoring me!
21
+ Please sponsoring me...
20
22
 
23
+ <img src="https://github.com/ubugeeei/sponsors/blob/main/sponsors-transparent.png?raw=true" width="500">
24
+
25
+ </div>
Binary file
package/dist/cli.js CHANGED
@@ -1,174 +1,182 @@
1
1
  #!/usr/bin/env node
2
- //#region bin/cli.ts
3
- const ESC = "\x1B";
4
- const OSC = "\x1B]";
5
- const BEL = "\x07";
6
- const RESET = `${ESC}[0m`;
7
- const BOLD = `${ESC}[1m`;
8
- const rgb = (r, g, b) => `${ESC}[38;2;${r};${g};${b}m`;
9
- const COLORS = {
10
- black: rgb(0, 0, 0),
11
- dark: rgb(40, 40, 40),
12
- gray: rgb(100, 100, 100),
13
- light: rgb(160, 160, 160),
14
- border: rgb(80, 80, 80)
2
+
3
+ // bin/cli.ts
4
+ var ESC = "\x1B";
5
+ var OSC = "\x1B]";
6
+ var BEL = "\x07";
7
+ var RESET = `${ESC}[0m`;
8
+ var BOLD = `${ESC}[1m`;
9
+ var DIM = `${ESC}[2m`;
10
+ var ITALIC = `${ESC}[3m`;
11
+ var rgb = (r, g, b) => `${ESC}[38;2;${r};${g};${b}m`;
12
+ var COLORS = {
13
+ vue: rgb(66, 184, 131),
14
+ vueDark: rgb(52, 152, 108),
15
+ vueLight: rgb(100, 207, 159),
16
+ cyan: rgb(0, 200, 220),
17
+ orange: rgb(255, 160, 70),
18
+ pink: rgb(255, 100, 150),
19
+ purple: rgb(180, 120, 255),
20
+ yellow: rgb(255, 215, 0),
21
+ white: rgb(255, 255, 255),
22
+ gray: rgb(150, 150, 150),
23
+ darkGray: rgb(80, 80, 80),
24
+ border: rgb(66, 184, 131)
15
25
  };
16
- const link = (url, text) => `${OSC}8;;${url}${BEL}${text}${OSC}8;;${BEL}`;
17
- const messages = {
18
- en: {
19
- greeting: "Hi there!",
20
- name: "ubugeeei",
21
- nickname: "もののけ王",
22
- tagline: "うにをくらえ 🦀彡..。o",
23
- interests: "Jazz, Art, Compiler, Vue",
24
- memberOf: "Member of",
25
- author: "Author of",
26
- kingOf: "King of",
27
- chiefEngineerOf: "Chief Engineer of",
28
- contribute: "Contribute",
29
- blog: "Blog",
30
- github: "GitHub",
31
- twitter: "Twitter",
32
- discord: "Discord",
33
- sponsor: "Sponsor"
34
- },
35
- ja: {
36
- greeting: "ごきげんよう!",
37
- name: "ubugeeei",
38
- nickname: "もののけ王",
39
- tagline: "うにをくらえ 🦀彡..。o",
40
- interests: "Jazz, Art, Compiler, Vue",
41
- memberOf: "Member of",
42
- author: "作者",
43
- kingOf: "King of",
44
- chiefEngineerOf: "Chief Engineer of",
45
- contribute: "Contribute",
46
- blog: "Blog",
47
- github: "GitHub",
48
- twitter: "Twitter",
49
- discord: "Discord",
50
- sponsor: "Sponsor"
51
- }
26
+ var GRADIENT = [
27
+ rgb(66, 184, 131),
28
+ rgb(60, 170, 140),
29
+ rgb(50, 160, 160),
30
+ rgb(40, 150, 180),
31
+ rgb(30, 140, 200),
32
+ rgb(20, 130, 220),
33
+ rgb(80, 120, 240),
34
+ rgb(140, 110, 255)
35
+ ];
36
+ function gradientText(text) {
37
+ let result = "";
38
+ for (let i = 0;i < text.length; i++) {
39
+ const colorIndex = Math.floor(i / text.length * GRADIENT.length);
40
+ result += GRADIENT[colorIndex] + text[i];
41
+ }
42
+ return result + RESET;
43
+ }
44
+ var link = (url, text) => `${OSC}8;;${url}${BEL}${text}${OSC}8;;${BEL}`;
45
+ var messages = {
46
+ en: {
47
+ name: "ubugeeei",
48
+ nickname: "もののけ王",
49
+ tagline: "うにをくらえ",
50
+ uni: "\uD83E\uDD80彡..。o",
51
+ interests: "Jazz, Art, Compiler, Vue",
52
+ memberOf: "Member of",
53
+ author: "Author of",
54
+ kingOf: "King of",
55
+ chiefEngineerOf: "Chief Engineer of",
56
+ contribute: "Contribute",
57
+ blog: "Blog"
58
+ },
59
+ ja: {
60
+ name: "ubugeeei",
61
+ nickname: "もののけ王",
62
+ tagline: "うにをくらえ",
63
+ uni: "\uD83E\uDD80彡..。o",
64
+ interests: "Jazz, Art, Compiler, Vue",
65
+ memberOf: "Member of",
66
+ author: "Author of",
67
+ kingOf: "King of",
68
+ chiefEngineerOf: "Chief Engineer of",
69
+ contribute: "Contribute",
70
+ blog: "Blog"
71
+ }
52
72
  };
53
73
  function detectLocale() {
54
- const args = process.argv.slice(2);
55
- if (args.includes("--ja") || args.includes("-j") || args.includes("--japanese")) return "ja";
56
- if (args.includes("--en") || args.includes("-e") || args.includes("--english")) return "en";
57
- if ((process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL || "").toLowerCase().startsWith("ja")) return "ja";
58
- return "en";
74
+ const args = process.argv.slice(2);
75
+ if (args.includes("--ja") || args.includes("-j") || args.includes("--japanese"))
76
+ return "ja";
77
+ if (args.includes("--en") || args.includes("-e") || args.includes("--english"))
78
+ return "en";
79
+ if ((process.env.LANG || process.env.LANGUAGE || process.env.LC_ALL || "").toLowerCase().startsWith("ja"))
80
+ return "ja";
81
+ return "en";
59
82
  }
60
- const projects = [
61
- {
62
- name: "chibivue",
63
- url: "https://github.com/chibivue-land/chibivue"
64
- },
65
- {
66
- name: "reading-vuejs-core-vapor",
67
- url: "https://github.com/ubugeeei/reading-vuejs-core-vapor"
68
- },
69
- {
70
- name: "vize",
71
- url: "https://github.com/ubugeeei/vize"
72
- },
73
- {
74
- name: "ox-content",
75
- url: "https://github.com/ubugeeei/ox-content"
76
- },
77
- {
78
- name: "relanote",
79
- url: "https://github.com/ubugeeei/relanote"
80
- },
81
- {
82
- name: "learn.nuxt.com (ja)",
83
- url: "https://github.com/nuxt/learn.nuxt.com"
84
- },
85
- {
86
- name: "jp-vue-companies",
87
- url: "https://github.com/chibivue-land/japanese-companies-using-vuejs"
88
- }
83
+ var projects = [
84
+ { name: "chibivue", url: "https://github.com/chibivue-land/chibivue" },
85
+ {
86
+ name: "reading-vuejs-core-vapor",
87
+ url: "https://github.com/ubugeeei/reading-vuejs-core-vapor"
88
+ },
89
+ { name: "vize", url: "https://github.com/ubugeeei/vize" },
90
+ { name: "ox-content", url: "https://github.com/ubugeeei/ox-content" },
91
+ { name: "relanote", url: "https://github.com/ubugeeei/relanote" },
92
+ { name: "learn.nuxt.com (ja)", url: "https://github.com/nuxt/learn.nuxt.com" },
93
+ {
94
+ name: "jp-vue-companies",
95
+ url: "https://github.com/chibivue-land/japanese-companies-using-vuejs"
96
+ }
89
97
  ];
90
- const contributes = [
91
- {
92
- name: "vuejs (mainly vapor)",
93
- url: "https://github.com/vuejs/core"
94
- },
95
- {
96
- name: "oxc",
97
- url: "https://github.com/oxc-project/oxc"
98
- },
99
- {
100
- name: "vuefes",
101
- url: "https://github.com/vuejs-jp/vuefes-2025"
102
- }
98
+ var contributes = [
99
+ { name: "vuejs/core (mainly vapor)", url: "https://github.com/vuejs/core" },
100
+ { name: "oxc", url: "https://github.com/oxc-project/oxc" },
101
+ { name: "vuefes", url: "https://github.com/vuejs-jp/vuefes-2025" }
103
102
  ];
104
103
  function getDisplayWidth(str) {
105
- const clean = str.replace(/\x1b\[[0-9;]*m|\x1b\]8;;[^\x07]*\x07/g, "");
106
- let width = 0;
107
- for (const char of clean) {
108
- const code = char.codePointAt(0) || 0;
109
- if (code >= 4352 && code <= 4447 || code >= 11904 && code <= 40959 || code >= 44032 && code <= 55203 || code >= 63744 && code <= 64255 || code >= 65040 && code <= 65055 || code >= 65072 && code <= 65135 || code >= 65280 && code <= 65376 || code >= 65504 && code <= 65510 || code >= 127744 && code <= 129535 || code >= 131072 && code <= 196607) width += 2;
110
- else width += 1;
111
- }
112
- return width;
104
+ const clean = str.replace(/\x1b\[[0-9;]*m|\x1b\]8;;[^\x07]*\x07/g, "");
105
+ let width = 0;
106
+ for (const char of clean) {
107
+ const code = char.codePointAt(0) || 0;
108
+ if (code >= 4352 && code <= 4447 || code >= 11904 && code <= 40959 || code >= 44032 && code <= 55215 || code >= 63744 && code <= 64255 || code >= 65040 && code <= 65055 || code >= 65072 && code <= 65135 || code >= 65280 && code <= 65376 || code >= 65504 && code <= 65510 || code >= 127744 && code <= 129535 || code >= 131072 && code <= 196607)
109
+ width += 2;
110
+ else
111
+ width += 1;
112
+ }
113
+ return width;
113
114
  }
114
115
  function padRight(str, targetWidth) {
115
- const padding = targetWidth - getDisplayWidth(str);
116
- return str + " ".repeat(Math.max(0, padding));
116
+ const padding = targetWidth - getDisplayWidth(str);
117
+ return str + " ".repeat(Math.max(0, padding));
117
118
  }
118
- const WIDTH = 58;
119
- const INNER_WIDTH = WIDTH - 4;
119
+ var WIDTH = 62;
120
+ var INNER_WIDTH = WIDTH - 4;
120
121
  function createLine(content) {
121
- const border = COLORS.border;
122
- return `${border}│${RESET} ${padRight(content, INNER_WIDTH)} ${border}│${RESET}`;
122
+ return `${COLORS.border}│${RESET} ${padRight(content, INNER_WIDTH)} ${COLORS.border}│${RESET}`;
123
+ }
124
+ function createEmptyLine() {
125
+ return `${COLORS.border}│${RESET}${" ".repeat(WIDTH - 2)}${COLORS.border}│${RESET}`;
126
+ }
127
+ function createSeparator() {
128
+ return `${COLORS.border}├${"─".repeat(WIDTH - 2)}┤${RESET}`;
123
129
  }
124
130
  function main() {
125
- const t = messages[detectLocale()];
126
- const border = COLORS.border;
127
- const topBorder = `${border}┌${"─".repeat(WIDTH - 2)}┐${RESET}`;
128
- const bottomBorder = `${border}└${"─".repeat(WIDTH - 2)}┘${RESET}`;
129
- const projectLinks = projects.map((p) => link(p.url, COLORS.dark + p.name + RESET));
130
- const contributeLinks = contributes.map((p) => link(p.url, COLORS.dark + p.name + RESET));
131
- const lines = [
132
- "",
133
- topBorder,
134
- createLine(""),
135
- createLine(`${BOLD}${COLORS.black}${t.name}${RESET} ${COLORS.gray}(${t.nickname})${RESET}`),
136
- createLine(`${COLORS.light}${t.tagline}${RESET}`),
137
- createLine(""),
138
- createLine(`${COLORS.gray}Fav:${RESET}`),
139
- createLine(`${COLORS.light}${t.interests}${RESET}`),
140
- createLine(""),
141
- createLine(`${COLORS.gray}${t.memberOf}:${RESET}`),
142
- createLine(`${link("https://vuejs.org", COLORS.dark + "Vue" + RESET)} ${link("https://vuejs-jp.org", COLORS.dark + "Vue.js JP" + RESET)}`),
143
- createLine(""),
144
- createLine(`${COLORS.gray}${t.kingOf}:${RESET}`),
145
- createLine(`${link("https://chibivue.land", COLORS.dark + "chibivue.land" + RESET)}`),
146
- createLine(""),
147
- createLine(`${COLORS.gray}${t.chiefEngineerOf}:${RESET}`),
148
- createLine(`${link("https://github.com/mates-system", COLORS.dark + "@mates-system" + RESET)}`),
149
- createLine(""),
150
- createLine(`${COLORS.gray}${t.author}:${RESET}`),
151
- createLine(`${projectLinks.slice(0, 2).join(", ")}`),
152
- createLine(`${projectLinks.slice(2, 5).join(", ")}`),
153
- createLine(`${projectLinks.slice(5).join(", ")}`),
154
- createLine(""),
155
- createLine(`${COLORS.gray}${t.contribute}:${RESET}`),
156
- createLine(`${contributeLinks.join(", ")}`),
157
- createLine(""),
158
- createLine(`${COLORS.gray}${t.blog}:${RESET}`),
159
- createLine(`${link("https://wtrclred.io", COLORS.dark + "wtrclred.io" + RESET)}`),
160
- createLine(""),
161
- createLine(`${COLORS.gray}GitHub:${RESET} ${link("https://github.com/ubugeeei", COLORS.dark + "github.com/ubugeeei" + RESET)}`),
162
- createLine(`${COLORS.gray}Twitter:${RESET} ${link("https://x.com/ubugeeei", COLORS.dark + "@ubugeeei" + RESET)}`),
163
- createLine(`${COLORS.gray}Discord:${RESET} ${link("https://discord.com/users/ubugeeei", COLORS.dark + "ubugeeei" + RESET)}`),
164
- createLine(`${COLORS.gray}Sponsor:${RESET} ${link("https://github.com/sponsors/ubugeeei", COLORS.dark + "github.com/sponsors/ubugeeei" + RESET)}`),
165
- createLine(""),
166
- bottomBorder,
167
- ""
168
- ];
169
- console.log(lines.join("\n"));
131
+ const t = messages[detectLocale()];
132
+ const topBorder = `${COLORS.border}╭${"─".repeat(WIDTH - 2)}╮${RESET}`;
133
+ const bottomBorder = `${COLORS.border}╰${"─".repeat(WIDTH - 2)}╯${RESET}`;
134
+ const projectLinks = projects.map((p) => link(p.url, COLORS.cyan + p.name + RESET));
135
+ const contributeLinks = contributes.map((p) => link(p.url, COLORS.purple + p.name + RESET));
136
+ const lines = [
137
+ "",
138
+ topBorder,
139
+ createEmptyLine(),
140
+ createLine(`${BOLD}${gradientText(t.name)}${RESET} ${COLORS.gray}${t.nickname}${RESET}`),
141
+ createLine(`${COLORS.orange}${t.tagline}${RESET} ${t.uni}`),
142
+ createLine(`${DIM}${COLORS.gray}${t.interests}${RESET}`),
143
+ createEmptyLine(),
144
+ createSeparator(),
145
+ createEmptyLine(),
146
+ createLine(`${COLORS.yellow}★${RESET} ${COLORS.white}${t.memberOf}${RESET}`),
147
+ createLine(` ${link("https://vuejs.org", COLORS.vue + BOLD + "Vue.js" + RESET)} ${link("https://vuejs-jp.org", COLORS.vue + "Vue.js Japan" + RESET)}`),
148
+ createEmptyLine(),
149
+ createLine(`${COLORS.pink}♛${RESET} ${COLORS.white}${t.kingOf}${RESET}`),
150
+ createLine(` ${link("https://chibivue.land", COLORS.cyan + "chibivue.land" + RESET)}`),
151
+ createEmptyLine(),
152
+ createLine(`${COLORS.orange}⚙${RESET} ${COLORS.white}${t.chiefEngineerOf}${RESET}`),
153
+ createLine(` ${link("https://github.com/mates-system", COLORS.cyan + "@mates-system" + RESET)}`),
154
+ createEmptyLine(),
155
+ createSeparator(),
156
+ createEmptyLine(),
157
+ createLine(`${COLORS.vue}✦${RESET} ${COLORS.white}${t.author}${RESET}`),
158
+ createLine(` ${projectLinks.slice(0, 2).join(", ")}`),
159
+ createLine(` ${projectLinks.slice(2, 4).join(", ")}`),
160
+ createLine(` ${projectLinks.slice(4, 6).join(", ")}`),
161
+ createLine(` ${projectLinks.slice(6).join(", ")}`),
162
+ createEmptyLine(),
163
+ createLine(`${COLORS.purple}◈${RESET} ${COLORS.white}${t.contribute}${RESET}`),
164
+ createLine(` ${contributeLinks.join(", ")}`),
165
+ createEmptyLine(),
166
+ createLine(`${COLORS.cyan}✎${RESET} ${COLORS.white}${t.blog}${RESET}`),
167
+ createLine(` ${link("https://wtrclred.io", COLORS.cyan + "wtrclred.io" + RESET)}`),
168
+ createEmptyLine(),
169
+ createSeparator(),
170
+ createEmptyLine(),
171
+ createLine(`${COLORS.white}GitHub${RESET} ${link("https://github.com/ubugeeei", COLORS.gray + "github.com/ubugeeei" + RESET)}`),
172
+ createLine(`${COLORS.white}Twitter${RESET} ${link("https://x.com/ubugeeei", COLORS.gray + "@ubugeeei" + RESET)}`),
173
+ createLine(`${COLORS.white}Discord${RESET} ${link("https://discord.com/users/ubugeeei", COLORS.gray + "ubugeeei" + RESET)}`),
174
+ createLine(`${COLORS.pink}Sponsor${RESET} ${link("https://github.com/sponsors/ubugeeei", COLORS.pink + "github.com/sponsors/ubugeeei" + RESET)}`),
175
+ createEmptyLine(),
176
+ bottomBorder,
177
+ ""
178
+ ];
179
+ console.log(lines.join(`
180
+ `));
170
181
  }
171
182
  main();
172
-
173
- //#endregion
174
- export { };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ubugeeei",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
4
  "description": "Hi! I'm ubugeeei, Vue.js team member, author of chibivue and vize",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -11,8 +11,9 @@
11
11
  ".": "./index.js"
12
12
  },
13
13
  "scripts": {
14
- "build": "rolldown bin/cli.ts -d dist --platform node",
15
- "dev": "node --experimental-strip-types --no-warnings bin/cli.ts"
14
+ "build": "bun run typecheck && bun build bin/cli.ts --outdir dist --target node",
15
+ "dev": "bun run bin/cli.ts",
16
+ "typecheck": "tsc --noEmit"
16
17
  },
17
18
  "keywords": [
18
19
  "cli",
@@ -33,11 +34,10 @@
33
34
  },
34
35
  "funding": "https://github.com/sponsors/ubugeeei",
35
36
  "engines": {
36
- "node": ">=22.6.0"
37
+ "node": ">=18.0.0"
37
38
  },
38
39
  "devDependencies": {
39
- "@types/node": "^22.0.0",
40
- "rolldown": "^1.0.0-beta.60",
40
+ "@types/bun": "^1.0.0",
41
41
  "typescript": "^5.0.0"
42
42
  },
43
43
  "files": [
package/assets/avatar.png DELETED
Binary file