walkwright 0.0.1 → 0.0.2
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/build/{chunk-RNNW7OW2.js → chunk-6J7OH2SF.js} +5 -6
- package/build/{chunk-RNNW7OW2.js.map → chunk-6J7OH2SF.js.map} +1 -1
- package/build/{chunk-MFTC7XL2.js → chunk-J7MVIPMW.js} +2 -2
- package/build/cli.js +2 -2
- package/build/device-auth.js +2 -2
- package/build/reporter.js +1 -1
- package/build/ui.js +1 -1
- package/package.json +1 -1
- package/src/ui.ts +4 -5
- /package/build/{chunk-MFTC7XL2.js.map → chunk-J7MVIPMW.js.map} +0 -0
|
@@ -228,15 +228,14 @@ function pulse(text, intervalMs = 500) {
|
|
|
228
228
|
};
|
|
229
229
|
}
|
|
230
230
|
function wordmark() {
|
|
231
|
-
return bold(`${paint("accent", "
|
|
231
|
+
return bold(`${paint("accent", "WALK")}${paint("text", "WRIGHT")}`);
|
|
232
232
|
}
|
|
233
233
|
function logo() {
|
|
234
234
|
const mark = (value) => paint("accent", value);
|
|
235
235
|
return [
|
|
236
|
-
mark("
|
|
237
|
-
`${mark(" \
|
|
238
|
-
mark("
|
|
239
|
-
mark(" \u25A0 \u25A0")
|
|
236
|
+
mark(" \u25A0"),
|
|
237
|
+
`${mark(" \u250C\u2500\u253C\u2500\u2510")} ${wordmark()}`,
|
|
238
|
+
mark(" \u25A0 \u25A0 \u25A1")
|
|
240
239
|
];
|
|
241
240
|
}
|
|
242
241
|
|
|
@@ -267,4 +266,4 @@ export {
|
|
|
267
266
|
wordmark,
|
|
268
267
|
logo
|
|
269
268
|
};
|
|
270
|
-
//# sourceMappingURL=chunk-
|
|
269
|
+
//# sourceMappingURL=chunk-6J7OH2SF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ui.ts"],"sourcesContent":["export type Tone =\n | \"accent\"\n | \"text\"\n | \"dim\"\n | \"faint\"\n | \"ok\"\n | \"warn\"\n | \"fail\"\n | \"code\"\n | \"border\";\n\ntype Depth = \"truecolor\" | \"256\" | \"none\";\n\ninterface Swatch {\n hex: string;\n index: number;\n}\n\nconst dark: Record<Tone, Swatch> = {\n accent: { hex: \"#b8943a\", index: 178 },\n text: { hex: \"#bcac8f\", index: 180 },\n dim: { hex: \"#8d8972\", index: 102 },\n faint: { hex: \"#6b6858\", index: 59 },\n ok: { hex: \"#8fa85e\", index: 107 },\n warn: { hex: \"#e08542\", index: 173 },\n fail: { hex: \"#d66848\", index: 167 },\n code: { hex: \"#cc7f66\", index: 173 },\n border: { hex: \"#333333\", index: 236 },\n};\n\nconst light: Record<Tone, Swatch> = {\n accent: { hex: \"#9a7820\", index: 136 },\n text: { hex: \"#3a3828\", index: 237 },\n dim: { hex: \"#625e55\", index: 240 },\n faint: { hex: \"#948e80\", index: 246 },\n ok: { hex: \"#5f8a3a\", index: 64 },\n warn: { hex: \"#c0741e\", index: 172 },\n fail: { hex: \"#b8442c\", index: 130 },\n code: { hex: \"#a85030\", index: 130 },\n border: { hex: \"#c9bfa6\", index: 250 },\n};\n\nexport const glyph = {\n ok: \"✓\",\n fail: \"✗\",\n carried: \"↺\",\n unseen: \"●\",\n open: \"▾\",\n closed: \"▸\",\n branch: \"├\",\n last: \"└\",\n cursor: \"▌\",\n prompt: \">\",\n filled: \"▰\",\n empty: \"▱\",\n dot: \"·\",\n bar: \"│\",\n} as const;\n\nprocess.stdout.on(\"error\", (error: NodeJS.ErrnoException) => {\n if (error.code !== \"EPIPE\") {\n throw error;\n }\n});\n\nconst depth = detectDepth();\nconst palette = detectLight() ? light : dark;\nconst esc = \"\\u001b\";\nconst escapePattern = new RegExp(`${esc}\\\\[[\\\\d;]*m`, \"g\");\nconst escapeSplit = new RegExp(`(${esc}\\\\[[\\\\d;]*m)`);\nconst escapeOnly = new RegExp(`^${esc}\\\\[[\\\\d;]*m$`);\n\nfunction detectDepth(): Depth {\n const env = process.env;\n\n if ((env[\"NO_COLOR\"] ?? \"\") !== \"\" || env[\"FORCE_COLOR\"] === \"0\") {\n return \"none\";\n }\n\n const forced = (env[\"FORCE_COLOR\"] ?? \"\") !== \"\";\n\n if (!forced && !process.stdout.isTTY) {\n return \"none\";\n }\n\n const colorterm = env[\"COLORTERM\"] ?? \"\";\n\n if (colorterm === \"truecolor\" || colorterm === \"24bit\") {\n return \"truecolor\";\n }\n\n const term = env[\"TERM\"] ?? \"\";\n\n if (term === \"dumb\" || (term === \"\" && !forced)) {\n return \"none\";\n }\n\n return \"256\";\n}\n\nfunction detectLight(): boolean {\n const theme = process.env[\"WALKWRIGHT_THEME\"];\n\n if (theme === \"light\" || theme === \"dark\") {\n return theme === \"light\";\n }\n\n const fgbg = process.env[\"COLORFGBG\"];\n\n if (fgbg === undefined) {\n return false;\n }\n\n const background = Number(fgbg.split(\";\").at(-1));\n\n return background === 7 || (background >= 9 && background <= 15);\n}\n\nfunction open(swatch: Swatch): string {\n if (depth === \"truecolor\") {\n const value = Number.parseInt(swatch.hex.slice(1), 16);\n\n return `\\u001b[38;2;${String(value >> 16)};${String((value >> 8) & 255)};${String(value & 255)}m`;\n }\n\n return `\\u001b[38;5;${String(swatch.index)}m`;\n}\n\nexport function paint(tone: Tone, value: string): string {\n if (depth === \"none\" || value === \"\") {\n return value;\n }\n\n return `${open(palette[tone])}${value}\\u001b[39m`;\n}\n\nexport function bold(value: string): string {\n return depth === \"none\" ? value : `\\u001b[1m${value}\\u001b[22m`;\n}\n\nexport function plain(value: string): string {\n return value.replace(escapePattern, \"\");\n}\n\nexport function width(value: string): number {\n return plain(value).length;\n}\n\nexport function columns(): number {\n return process.stdout.isTTY ? process.stdout.columns : 100;\n}\n\nexport function pad(value: string, to: number): string {\n return value + \" \".repeat(Math.max(0, to - width(value)));\n}\n\nexport function clip(value: string, to: number): string {\n if (width(value) <= to) {\n return value;\n }\n\n let seen = 0;\n let out = \"\";\n\n for (const part of value.split(escapeSplit)) {\n if (escapeOnly.test(part)) {\n out += part;\n continue;\n }\n\n for (const char of part) {\n if (seen === to - 1) {\n return `${out}…${depth === \"none\" ? \"\" : \"\\u001b[0m\"}`;\n }\n\n out += char;\n seen += 1;\n }\n }\n\n return out;\n}\n\nexport function line(...parts: string[]): void {\n process.stdout.write(`${parts.join(\"\")}\\n`);\n}\n\nexport function blank(): void {\n process.stdout.write(\"\\n\");\n}\n\nexport function status(...segments: string[]): string {\n return ` ${segments.filter((segment) => segment !== \"\").join(paint(\"faint\", ` ${glyph.bar} `))}`;\n}\n\nexport function badge(count: number, tone: Tone = \"dim\"): string {\n return paint(tone, `[${String(count)}]`);\n}\n\nexport function key(name: string): string {\n return paint(\"accent\", `[${name}]`);\n}\n\nexport function action(verb: string): string {\n return paint(\"accent\", `[${verb}]`);\n}\n\nexport function prompt(text: string): string {\n return `${paint(\"accent\", glyph.prompt)} ${text}`;\n}\n\nexport function dashed(inner: number): string {\n return paint(\"border\", \"╌\".repeat(inner));\n}\n\nexport interface BoxOptions {\n legend: string;\n title?: string;\n primary?: boolean;\n min?: number;\n}\n\nexport function box(rows: string[], options: BoxOptions): string[] {\n const outer = Math.min(columns() - 1, 100);\n const min = Math.max(options.min ?? 44, width(options.legend) + 10);\n const widest = rows.reduce((max, row) => Math.max(max, width(row)), 0);\n const inner = Math.max(min - 4, Math.min(widest, outer - 4));\n\n const edge = (value: string): string => paint(\"border\", value);\n\n const legend = paint(\n options.primary === true ? \"accent\" : \"dim\",\n options.legend.toUpperCase(),\n );\n const heading =\n options.title === undefined\n ? `${edge(\"─ \")}${legend}${edge(\" \")}`\n : `${edge(\"─ \")}${legend}${edge(\" ─ \")}${paint(\"text\", options.title)}${edge(\" \")}`;\n const top = `${edge(\"┌\")}${clip(heading, inner + 2)}${edge(\"─\".repeat(Math.max(0, inner + 2 - width(heading))))}${edge(\"┐\")}`;\n const bottom = `${edge(\"└\")}${edge(\"─\".repeat(inner + 2))}${edge(\"┘\")}`;\n\n const body = rows.map(\n (row) =>\n `${edge(\"│\")} ${pad(clip(row === \"\" ? dashed(inner) : row, inner), inner)} ${edge(\"│\")}`,\n );\n\n return [top, ...body, bottom];\n}\n\nexport function progress(done: number, total: number, cells = 5): string {\n const filled = total === 0 ? cells : Math.round((done / total) * cells);\n\n return paint(\n \"accent\",\n glyph.filled.repeat(filled) + glyph.empty.repeat(cells - filled),\n );\n}\n\nexport function duration(ms: number): string {\n if (ms < 1000) {\n return `${String(Math.round(ms))}ms`;\n }\n\n const seconds = Math.round(ms / 1000);\n\n if (seconds < 60) {\n return `${String(seconds)}s`;\n }\n\n return `${String(Math.floor(seconds / 60))}m${String(seconds % 60).padStart(2, \"0\")}s`;\n}\n\nexport function count(value: number, noun: string): string {\n return `${String(value)} ${noun}${value === 1 ? \"\" : \"s\"}`;\n}\n\nexport function failure(message: string, hint?: string): void {\n process.stderr.write(`${paint(\"fail\", `${glyph.fail} ${message}`)}\\n`);\n\n if (hint !== undefined) {\n process.stderr.write(`${paint(\"dim\", ` ${hint}`)}\\n`);\n }\n}\n\nexport function transient(text: string): () => void {\n if (!process.stdout.isTTY) {\n return () => undefined;\n }\n\n process.stdout.write(`\\r\\u001b[2K${clip(text, columns() - 1)}`);\n\n return () => {\n process.stdout.write(\"\\r\\u001b[2K\");\n };\n}\n\nexport function pulse(text: string, intervalMs = 500): () => void {\n if (!process.stdout.isTTY) {\n line(text);\n return () => undefined;\n }\n\n let on = true;\n const draw = (): void => {\n process.stdout.write(\n `\\r\\u001b[2K${clip(`${text} ${on ? paint(\"accent\", glyph.cursor) : \" \"}`, columns() - 1)}`,\n );\n on = !on;\n };\n\n draw();\n const timer = setInterval(draw, intervalMs);\n\n return () => {\n clearInterval(timer);\n process.stdout.write(\"\\r\\u001b[2K\");\n };\n}\n\nexport function wordmark(): string {\n return bold(`${paint(\"accent\", \"MAP\")}${paint(\"text\", \"WRIGHT\")}`);\n}\n\nexport function logo(): string[] {\n const mark = (value: string): string => paint(\"accent\", value);\n\n return [\n mark(\" ┌─■─┐\"),\n `${mark(\" ■ ■\")} ${wordmark()}`,\n mark(\" ┌┴┐\"),\n mark(\" ■ ■\"),\n ];\n}\n"],"mappings":"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","names":["count"]}
|
|
1
|
+
{"version":3,"sources":["../src/ui.ts"],"sourcesContent":["export type Tone =\n | \"accent\"\n | \"text\"\n | \"dim\"\n | \"faint\"\n | \"ok\"\n | \"warn\"\n | \"fail\"\n | \"code\"\n | \"border\";\n\ntype Depth = \"truecolor\" | \"256\" | \"none\";\n\ninterface Swatch {\n hex: string;\n index: number;\n}\n\nconst dark: Record<Tone, Swatch> = {\n accent: { hex: \"#b8943a\", index: 178 },\n text: { hex: \"#bcac8f\", index: 180 },\n dim: { hex: \"#8d8972\", index: 102 },\n faint: { hex: \"#6b6858\", index: 59 },\n ok: { hex: \"#8fa85e\", index: 107 },\n warn: { hex: \"#e08542\", index: 173 },\n fail: { hex: \"#d66848\", index: 167 },\n code: { hex: \"#cc7f66\", index: 173 },\n border: { hex: \"#333333\", index: 236 },\n};\n\nconst light: Record<Tone, Swatch> = {\n accent: { hex: \"#9a7820\", index: 136 },\n text: { hex: \"#3a3828\", index: 237 },\n dim: { hex: \"#625e55\", index: 240 },\n faint: { hex: \"#948e80\", index: 246 },\n ok: { hex: \"#5f8a3a\", index: 64 },\n warn: { hex: \"#c0741e\", index: 172 },\n fail: { hex: \"#b8442c\", index: 130 },\n code: { hex: \"#a85030\", index: 130 },\n border: { hex: \"#c9bfa6\", index: 250 },\n};\n\nexport const glyph = {\n ok: \"✓\",\n fail: \"✗\",\n carried: \"↺\",\n unseen: \"●\",\n open: \"▾\",\n closed: \"▸\",\n branch: \"├\",\n last: \"└\",\n cursor: \"▌\",\n prompt: \">\",\n filled: \"▰\",\n empty: \"▱\",\n dot: \"·\",\n bar: \"│\",\n} as const;\n\nprocess.stdout.on(\"error\", (error: NodeJS.ErrnoException) => {\n if (error.code !== \"EPIPE\") {\n throw error;\n }\n});\n\nconst depth = detectDepth();\nconst palette = detectLight() ? light : dark;\nconst esc = \"\\u001b\";\nconst escapePattern = new RegExp(`${esc}\\\\[[\\\\d;]*m`, \"g\");\nconst escapeSplit = new RegExp(`(${esc}\\\\[[\\\\d;]*m)`);\nconst escapeOnly = new RegExp(`^${esc}\\\\[[\\\\d;]*m$`);\n\nfunction detectDepth(): Depth {\n const env = process.env;\n\n if ((env[\"NO_COLOR\"] ?? \"\") !== \"\" || env[\"FORCE_COLOR\"] === \"0\") {\n return \"none\";\n }\n\n const forced = (env[\"FORCE_COLOR\"] ?? \"\") !== \"\";\n\n if (!forced && !process.stdout.isTTY) {\n return \"none\";\n }\n\n const colorterm = env[\"COLORTERM\"] ?? \"\";\n\n if (colorterm === \"truecolor\" || colorterm === \"24bit\") {\n return \"truecolor\";\n }\n\n const term = env[\"TERM\"] ?? \"\";\n\n if (term === \"dumb\" || (term === \"\" && !forced)) {\n return \"none\";\n }\n\n return \"256\";\n}\n\nfunction detectLight(): boolean {\n const theme = process.env[\"WALKWRIGHT_THEME\"];\n\n if (theme === \"light\" || theme === \"dark\") {\n return theme === \"light\";\n }\n\n const fgbg = process.env[\"COLORFGBG\"];\n\n if (fgbg === undefined) {\n return false;\n }\n\n const background = Number(fgbg.split(\";\").at(-1));\n\n return background === 7 || (background >= 9 && background <= 15);\n}\n\nfunction open(swatch: Swatch): string {\n if (depth === \"truecolor\") {\n const value = Number.parseInt(swatch.hex.slice(1), 16);\n\n return `\\u001b[38;2;${String(value >> 16)};${String((value >> 8) & 255)};${String(value & 255)}m`;\n }\n\n return `\\u001b[38;5;${String(swatch.index)}m`;\n}\n\nexport function paint(tone: Tone, value: string): string {\n if (depth === \"none\" || value === \"\") {\n return value;\n }\n\n return `${open(palette[tone])}${value}\\u001b[39m`;\n}\n\nexport function bold(value: string): string {\n return depth === \"none\" ? value : `\\u001b[1m${value}\\u001b[22m`;\n}\n\nexport function plain(value: string): string {\n return value.replace(escapePattern, \"\");\n}\n\nexport function width(value: string): number {\n return plain(value).length;\n}\n\nexport function columns(): number {\n return process.stdout.isTTY ? process.stdout.columns : 100;\n}\n\nexport function pad(value: string, to: number): string {\n return value + \" \".repeat(Math.max(0, to - width(value)));\n}\n\nexport function clip(value: string, to: number): string {\n if (width(value) <= to) {\n return value;\n }\n\n let seen = 0;\n let out = \"\";\n\n for (const part of value.split(escapeSplit)) {\n if (escapeOnly.test(part)) {\n out += part;\n continue;\n }\n\n for (const char of part) {\n if (seen === to - 1) {\n return `${out}…${depth === \"none\" ? \"\" : \"\\u001b[0m\"}`;\n }\n\n out += char;\n seen += 1;\n }\n }\n\n return out;\n}\n\nexport function line(...parts: string[]): void {\n process.stdout.write(`${parts.join(\"\")}\\n`);\n}\n\nexport function blank(): void {\n process.stdout.write(\"\\n\");\n}\n\nexport function status(...segments: string[]): string {\n return ` ${segments.filter((segment) => segment !== \"\").join(paint(\"faint\", ` ${glyph.bar} `))}`;\n}\n\nexport function badge(count: number, tone: Tone = \"dim\"): string {\n return paint(tone, `[${String(count)}]`);\n}\n\nexport function key(name: string): string {\n return paint(\"accent\", `[${name}]`);\n}\n\nexport function action(verb: string): string {\n return paint(\"accent\", `[${verb}]`);\n}\n\nexport function prompt(text: string): string {\n return `${paint(\"accent\", glyph.prompt)} ${text}`;\n}\n\nexport function dashed(inner: number): string {\n return paint(\"border\", \"╌\".repeat(inner));\n}\n\nexport interface BoxOptions {\n legend: string;\n title?: string;\n primary?: boolean;\n min?: number;\n}\n\nexport function box(rows: string[], options: BoxOptions): string[] {\n const outer = Math.min(columns() - 1, 100);\n const min = Math.max(options.min ?? 44, width(options.legend) + 10);\n const widest = rows.reduce((max, row) => Math.max(max, width(row)), 0);\n const inner = Math.max(min - 4, Math.min(widest, outer - 4));\n\n const edge = (value: string): string => paint(\"border\", value);\n\n const legend = paint(\n options.primary === true ? \"accent\" : \"dim\",\n options.legend.toUpperCase(),\n );\n const heading =\n options.title === undefined\n ? `${edge(\"─ \")}${legend}${edge(\" \")}`\n : `${edge(\"─ \")}${legend}${edge(\" ─ \")}${paint(\"text\", options.title)}${edge(\" \")}`;\n const top = `${edge(\"┌\")}${clip(heading, inner + 2)}${edge(\"─\".repeat(Math.max(0, inner + 2 - width(heading))))}${edge(\"┐\")}`;\n const bottom = `${edge(\"└\")}${edge(\"─\".repeat(inner + 2))}${edge(\"┘\")}`;\n\n const body = rows.map(\n (row) =>\n `${edge(\"│\")} ${pad(clip(row === \"\" ? dashed(inner) : row, inner), inner)} ${edge(\"│\")}`,\n );\n\n return [top, ...body, bottom];\n}\n\nexport function progress(done: number, total: number, cells = 5): string {\n const filled = total === 0 ? cells : Math.round((done / total) * cells);\n\n return paint(\n \"accent\",\n glyph.filled.repeat(filled) + glyph.empty.repeat(cells - filled),\n );\n}\n\nexport function duration(ms: number): string {\n if (ms < 1000) {\n return `${String(Math.round(ms))}ms`;\n }\n\n const seconds = Math.round(ms / 1000);\n\n if (seconds < 60) {\n return `${String(seconds)}s`;\n }\n\n return `${String(Math.floor(seconds / 60))}m${String(seconds % 60).padStart(2, \"0\")}s`;\n}\n\nexport function count(value: number, noun: string): string {\n return `${String(value)} ${noun}${value === 1 ? \"\" : \"s\"}`;\n}\n\nexport function failure(message: string, hint?: string): void {\n process.stderr.write(`${paint(\"fail\", `${glyph.fail} ${message}`)}\\n`);\n\n if (hint !== undefined) {\n process.stderr.write(`${paint(\"dim\", ` ${hint}`)}\\n`);\n }\n}\n\nexport function transient(text: string): () => void {\n if (!process.stdout.isTTY) {\n return () => undefined;\n }\n\n process.stdout.write(`\\r\\u001b[2K${clip(text, columns() - 1)}`);\n\n return () => {\n process.stdout.write(\"\\r\\u001b[2K\");\n };\n}\n\nexport function pulse(text: string, intervalMs = 500): () => void {\n if (!process.stdout.isTTY) {\n line(text);\n return () => undefined;\n }\n\n let on = true;\n const draw = (): void => {\n process.stdout.write(\n `\\r\\u001b[2K${clip(`${text} ${on ? paint(\"accent\", glyph.cursor) : \" \"}`, columns() - 1)}`,\n );\n on = !on;\n };\n\n draw();\n const timer = setInterval(draw, intervalMs);\n\n return () => {\n clearInterval(timer);\n process.stdout.write(\"\\r\\u001b[2K\");\n };\n}\n\nexport function wordmark(): string {\n return bold(`${paint(\"accent\", \"WALK\")}${paint(\"text\", \"WRIGHT\")}`);\n}\n\nexport function logo(): string[] {\n const mark = (value: string): string => paint(\"accent\", value);\n\n return [\n mark(\" ■\"),\n `${mark(\" ┌─┼─┐\")} ${wordmark()}`,\n mark(\" ■ ■ □\"),\n ];\n}\n"],"mappings":"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","names":["count"]}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
paint,
|
|
7
7
|
prompt,
|
|
8
8
|
pulse
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-6J7OH2SF.js";
|
|
10
10
|
|
|
11
11
|
// src/device-auth.ts
|
|
12
12
|
import { execFileSync } from "child_process";
|
|
@@ -138,4 +138,4 @@ export {
|
|
|
138
138
|
login,
|
|
139
139
|
ensureProject
|
|
140
140
|
};
|
|
141
|
-
//# sourceMappingURL=chunk-
|
|
141
|
+
//# sourceMappingURL=chunk-J7MVIPMW.js.map
|
package/build/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
ensureProject,
|
|
11
11
|
login
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-J7MVIPMW.js";
|
|
13
13
|
import {
|
|
14
14
|
blank,
|
|
15
15
|
bold,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
logo,
|
|
20
20
|
paint,
|
|
21
21
|
wordmark
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-6J7OH2SF.js";
|
|
23
23
|
import "./chunk-BODO6HIH.js";
|
|
24
24
|
import "./chunk-UAWBPTDW.js";
|
|
25
25
|
|
package/build/device-auth.js
CHANGED
package/build/reporter.js
CHANGED
package/build/ui.js
CHANGED
package/package.json
CHANGED
package/src/ui.ts
CHANGED
|
@@ -318,16 +318,15 @@ export function pulse(text: string, intervalMs = 500): () => void {
|
|
|
318
318
|
}
|
|
319
319
|
|
|
320
320
|
export function wordmark(): string {
|
|
321
|
-
return bold(`${paint("accent", "
|
|
321
|
+
return bold(`${paint("accent", "WALK")}${paint("text", "WRIGHT")}`);
|
|
322
322
|
}
|
|
323
323
|
|
|
324
324
|
export function logo(): string[] {
|
|
325
325
|
const mark = (value: string): string => paint("accent", value);
|
|
326
326
|
|
|
327
327
|
return [
|
|
328
|
-
mark("
|
|
329
|
-
`${mark("
|
|
330
|
-
mark("
|
|
331
|
-
mark(" ■ ■"),
|
|
328
|
+
mark(" ■"),
|
|
329
|
+
`${mark(" ┌─┼─┐")} ${wordmark()}`,
|
|
330
|
+
mark(" ■ ■ □"),
|
|
332
331
|
];
|
|
333
332
|
}
|
|
File without changes
|