@reliverse/relico 1.3.9 → 1.4.1
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/.vscode/extensions.json +8 -0
- package/.vscode/settings.json +45 -0
- package/README.md +19 -15
- package/biome.json +86 -0
- package/examples/benchmarks/bundle-size.ts +143 -0
- package/examples/benchmarks/config.example.ts +55 -0
- package/examples/benchmarks/config.ts +93 -0
- package/examples/benchmarks/performance.ts +172 -0
- package/examples/core.ts +62 -0
- package/package.json +19 -31
- package/reliverse.ts +399 -0
- package/reltypes.ts +1490 -0
- package/{bin/mod.js → src/mod.ts} +246 -69
- package/tsconfig.json +33 -0
- package/bin/mod.d.ts +0 -51
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
// Performance benchmarks for relico optimizations
|
|
2
|
+
|
|
3
|
+
import { dirname, resolve } from "path";
|
|
4
|
+
import { performance } from "perf_hooks";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
import { config, getEnabledDirs, getImportPath } from "./config";
|
|
7
|
+
|
|
8
|
+
// Constants
|
|
9
|
+
const MILLISECONDS_PER_SECOND = 1000;
|
|
10
|
+
const COLOR_LEVEL_BASIC = 1;
|
|
11
|
+
const COLOR_LEVEL_TRUECOLOR = 3;
|
|
12
|
+
const MULTILINE_TEST_SIZE = 50;
|
|
13
|
+
|
|
14
|
+
// Get the directory where this benchmark file is located
|
|
15
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
16
|
+
const __dirname = dirname(__filename);
|
|
17
|
+
|
|
18
|
+
// Dynamic imports for different source directories
|
|
19
|
+
async function importFromDir(dir: string) {
|
|
20
|
+
try {
|
|
21
|
+
const resolvedPath = resolve(__dirname, dir);
|
|
22
|
+
const module = await import(resolvedPath);
|
|
23
|
+
return module;
|
|
24
|
+
} catch (error) {
|
|
25
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
26
|
+
console.warn(`⚠️ Could not import from ${dir}:`, errorMessage);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
interface ModuleExports {
|
|
32
|
+
re: any;
|
|
33
|
+
chain: any;
|
|
34
|
+
setColorLevel: (level: number) => void;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Run benchmarks for a specific module
|
|
38
|
+
function runBenchmarks(module: ModuleExports) {
|
|
39
|
+
const { re, chain, setColorLevel } = module;
|
|
40
|
+
const { iterations, warmupRuns } = config.performance;
|
|
41
|
+
|
|
42
|
+
function benchmark(name: string, fn: () => void, iterCount = iterations) {
|
|
43
|
+
// Warmup runs
|
|
44
|
+
for (let i = 0; i < warmupRuns; i++) {
|
|
45
|
+
fn();
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const start = performance.now();
|
|
49
|
+
for (let i = 0; i < iterCount; i++) {
|
|
50
|
+
fn();
|
|
51
|
+
}
|
|
52
|
+
const end = performance.now();
|
|
53
|
+
const time = end - start;
|
|
54
|
+
const opsPerSec = Math.round((iterCount * MILLISECONDS_PER_SECOND) / time);
|
|
55
|
+
console.log(` ${name}: ${time.toFixed(2)}ms (${opsPerSec.toLocaleString()} ops/sec)`);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Test basic color operations
|
|
59
|
+
benchmark("Basic color access", () => {
|
|
60
|
+
re.red("test");
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
benchmark("Chained colors", () => {
|
|
64
|
+
re.bold.red.underline("test");
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
benchmark("Extended named colors", () => {
|
|
68
|
+
re.orange("test");
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
benchmark("Bright color variants", () => {
|
|
72
|
+
re.redBright("test");
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
benchmark("Chain function", () => {
|
|
76
|
+
chain(re.bold, re.red, re.underline)("test");
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
benchmark("Background colors", () => {
|
|
80
|
+
re.bgRed.white("test");
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
benchmark("Bright background colors", () => {
|
|
84
|
+
re.bgRedBright.white("test");
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
benchmark("Complex style combinations", () => {
|
|
88
|
+
re.bold.italic.underline.red("test");
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
benchmark("Style methods", () => {
|
|
92
|
+
re.dim.strikethrough("test");
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
benchmark("Color level changes", () => {
|
|
96
|
+
setColorLevel(COLOR_LEVEL_BASIC);
|
|
97
|
+
re.red("test");
|
|
98
|
+
setColorLevel(COLOR_LEVEL_TRUECOLOR); // Reset to truecolor
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
benchmark("Multiline text (small)", () => {
|
|
102
|
+
re.red("line1\nline2\nline3");
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
benchmark("Multiline text (large)", () => {
|
|
106
|
+
const largeText = new Array(MULTILINE_TEST_SIZE).fill("text").join("\n");
|
|
107
|
+
re.red(largeText);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
benchmark("Mixed background and foreground", () => {
|
|
111
|
+
re.bgBlue.yellow.bold("test");
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
benchmark("All basic colors iteration", () => {
|
|
115
|
+
const colors = ["red", "green", "blue", "yellow", "magenta", "cyan", "white", "black"];
|
|
116
|
+
for (const color of colors) {
|
|
117
|
+
re[color]("test");
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
benchmark("Extended colors iteration", () => {
|
|
122
|
+
const extendedColors = [
|
|
123
|
+
"orange",
|
|
124
|
+
"pink",
|
|
125
|
+
"purple",
|
|
126
|
+
"teal",
|
|
127
|
+
"lime",
|
|
128
|
+
"brown",
|
|
129
|
+
"navy",
|
|
130
|
+
"maroon",
|
|
131
|
+
"olive",
|
|
132
|
+
"silver",
|
|
133
|
+
];
|
|
134
|
+
for (const color of extendedColors) {
|
|
135
|
+
re[color]("test");
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
console.log("\n 📊 Bundle Size Test:");
|
|
140
|
+
console.log(` Core exports imported: ${Object.keys({ re, chain, setColorLevel }).length}`);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Test all enabled directories
|
|
144
|
+
async function runBenchmarksForAllDirs() {
|
|
145
|
+
const enabledDirs = getEnabledDirs();
|
|
146
|
+
|
|
147
|
+
for (const dir of enabledDirs) {
|
|
148
|
+
const importPath = getImportPath(dir);
|
|
149
|
+
console.log(`\n🔍 Testing ${dir.toUpperCase()} directory: ${importPath}`);
|
|
150
|
+
console.log("=".repeat(60));
|
|
151
|
+
|
|
152
|
+
const module = await importFromDir(importPath);
|
|
153
|
+
if (!module) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Run benchmarks for this directory
|
|
158
|
+
runBenchmarks(module);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Main execution
|
|
163
|
+
console.log("🚀 Relico Performance Benchmarks");
|
|
164
|
+
console.log("=".repeat(50));
|
|
165
|
+
|
|
166
|
+
runBenchmarksForAllDirs()
|
|
167
|
+
.then(() => {
|
|
168
|
+
console.log("\n✅ All benchmarks completed!");
|
|
169
|
+
})
|
|
170
|
+
.catch((error) => {
|
|
171
|
+
console.error("❌ Benchmark error:", error);
|
|
172
|
+
});
|
package/examples/core.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { chain, re, setColorLevel } from "~/mod";
|
|
2
|
+
|
|
3
|
+
const COLOR_LEVEL_TRUECOLOR = 3;
|
|
4
|
+
|
|
5
|
+
function main() {
|
|
6
|
+
setColorLevel(COLOR_LEVEL_TRUECOLOR);
|
|
7
|
+
|
|
8
|
+
console.log("--- Basic Color Examples ---");
|
|
9
|
+
console.log(re.bold.red.underline("Hello"));
|
|
10
|
+
console.log(chain(re.bold, re.red)("world"));
|
|
11
|
+
|
|
12
|
+
// Additional color tests
|
|
13
|
+
console.log("\n--- Named Color Examples ---");
|
|
14
|
+
console.log(re.blue("Blue text"));
|
|
15
|
+
console.log(re.green.bold("Bold green text"));
|
|
16
|
+
console.log(re.yellow.underline("Yellow underlined text"));
|
|
17
|
+
console.log(re.magenta.italic("Magenta italic text"));
|
|
18
|
+
console.log(re.bgRed.white("White text on red background"));
|
|
19
|
+
console.log(re.bgBlue.yellow("Yellow text on blue background"));
|
|
20
|
+
|
|
21
|
+
console.log("\n--- Extended Named Colors ---");
|
|
22
|
+
console.log(re.orange.bold("Orange text"));
|
|
23
|
+
console.log(re.pink.underline("Pink text"));
|
|
24
|
+
console.log(re.purple.italic("Purple text"));
|
|
25
|
+
console.log(re.teal.bold("Teal text"));
|
|
26
|
+
console.log(re.lime("Lime text"));
|
|
27
|
+
console.log(re.brown("Brown text"));
|
|
28
|
+
console.log(re.navy("Navy text"));
|
|
29
|
+
console.log(re.maroon("Maroon text"));
|
|
30
|
+
console.log(re.olive("Olive text"));
|
|
31
|
+
console.log(re.silver("Silver text"));
|
|
32
|
+
|
|
33
|
+
console.log("\n--- Bright Color Variants ---");
|
|
34
|
+
console.log(re.redBright("Bright red text"));
|
|
35
|
+
console.log(re.greenBright.bold("Bold bright green text"));
|
|
36
|
+
console.log(re.blueBright.underline("Underlined bright blue text"));
|
|
37
|
+
console.log(re.yellowBright.italic("Italic bright yellow text"));
|
|
38
|
+
|
|
39
|
+
console.log("\n--- Background Colors ---");
|
|
40
|
+
console.log(re.bgOrange.white("White text on orange background"));
|
|
41
|
+
console.log(re.bgPink.black("Black text on pink background"));
|
|
42
|
+
console.log(re.bgPurple.white("White text on purple background"));
|
|
43
|
+
console.log(re.bgTeal.white("White text on teal background"));
|
|
44
|
+
|
|
45
|
+
console.log("\n--- Bright Background Colors ---");
|
|
46
|
+
console.log(re.bgRedBright.white("White text on bright red background"));
|
|
47
|
+
console.log(re.bgGreenBright.black("Black text on bright green background"));
|
|
48
|
+
console.log(re.bgBlueBright.white("White text on bright blue background"));
|
|
49
|
+
|
|
50
|
+
console.log("\n--- Style Combinations ---");
|
|
51
|
+
console.log(re.bold.italic.underline.red("Bold italic underlined red text"));
|
|
52
|
+
console.log(re.dim.strikethrough.cyan("Dim strikethrough cyan text"));
|
|
53
|
+
console.log(re.inverse.magenta("Inverse magenta text"));
|
|
54
|
+
console.log(re.hidden("Hidden text (you might not see this)"));
|
|
55
|
+
|
|
56
|
+
console.log("\n--- Chaining Examples ---");
|
|
57
|
+
console.log(chain(re.bold, re.red, re.underline)("Chained formatting"));
|
|
58
|
+
console.log(chain(re.italic, re.blue, re.bgYellow)("Blue italic on yellow background"));
|
|
59
|
+
console.log(chain(re.dim, re.green)("Dim green text"));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
main();
|
package/package.json
CHANGED
|
@@ -1,37 +1,25 @@
|
|
|
1
1
|
{
|
|
2
|
-
"dependencies": {},
|
|
3
|
-
"description": "@reliverse/relico is a themeable, chainable, typed, truecolor-powered, modern terminal styling toolkit. Designed to make your CLI output colorful, accessible, and human-friendly. It gives you a flexible way to apply colors and styles — with reliability and a smart developer experience baked in. Built for humans, not just terminals.",
|
|
4
|
-
"homepage": "https://docs.reliverse.org/cli",
|
|
5
|
-
"license": "MIT",
|
|
6
2
|
"name": "@reliverse/relico",
|
|
7
|
-
"type": "module",
|
|
8
|
-
"version": "1.3.9",
|
|
9
3
|
"author": "reliverse",
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
"devDependencies": {},
|
|
22
|
-
"exports": {
|
|
23
|
-
".": "./bin/mod.js"
|
|
4
|
+
"version": "1.4.1",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"description": "@reliverse/relico is a themeable, chainable, typed, truecolor-powered, modern terminal styling toolkit. Designed to make your CLI output colorful, accessible, and human-friendly. It gives you a flexible way to apply colors and styles — with reliability and a smart developer experience baked in. Built for humans, not just terminals.",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"pub": "bun rse publish",
|
|
9
|
+
"dev": "bun examples/core.ts",
|
|
10
|
+
"perf": "bun bench && bun size",
|
|
11
|
+
"latest": "bun rse update && bun install",
|
|
12
|
+
"size": "bun examples/benchmarks/bundle-size.ts",
|
|
13
|
+
"bench": "bun examples/benchmarks/performance.ts",
|
|
14
|
+
"check": "bun tsc --noEmit && bun biome check --fix --unsafe"
|
|
24
15
|
},
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"module": "./bin/mod.js",
|
|
34
|
-
"publishConfig": {
|
|
35
|
-
"access": "public"
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@biomejs/biome": "2.2.2",
|
|
18
|
+
"@reliverse/rse": "^1.7.27",
|
|
19
|
+
"@total-typescript/ts-reset": "^0.6.1",
|
|
20
|
+
"@types/bun": "^1.2.21",
|
|
21
|
+
"@types/node": "^24.3.0",
|
|
22
|
+
"typescript": "^5.9.2",
|
|
23
|
+
"ultracite": "^5.2.17"
|
|
36
24
|
}
|
|
37
25
|
}
|
package/reliverse.ts
ADDED
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
import { defineConfig } from "./reltypes";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Reliverse Bundler Configuration
|
|
5
|
+
* Hover over a field to see more details
|
|
6
|
+
* @see https://github.com/reliverse/dler
|
|
7
|
+
*/
|
|
8
|
+
export default defineConfig({
|
|
9
|
+
// Bump configuration
|
|
10
|
+
bumpDisable: false,
|
|
11
|
+
bumpFilter: ["package.json", "reliverse.ts"],
|
|
12
|
+
bumpMode: "patch",
|
|
13
|
+
|
|
14
|
+
// Common configuration
|
|
15
|
+
commonPubPause: false,
|
|
16
|
+
commonPubRegistry: "npm",
|
|
17
|
+
commonVerbose: true,
|
|
18
|
+
|
|
19
|
+
// Core configuration
|
|
20
|
+
coreBuildOutDir: "bin",
|
|
21
|
+
coreDeclarations: true,
|
|
22
|
+
coreDescription:
|
|
23
|
+
"@reliverse/relico is a themeable, chainable, typed, truecolor-powered, modern terminal styling toolkit. Designed to make your CLI output colorful, accessible, and human-friendly. It gives you a flexible way to apply colors and styles — with reliability and a smart developer experience baked in. Built for humans, not just terminals.",
|
|
24
|
+
coreEntryFile: "mod.ts",
|
|
25
|
+
coreEntrySrcDir: "src",
|
|
26
|
+
coreIsCLI: { enabled: false, scripts: {} },
|
|
27
|
+
|
|
28
|
+
// Logs
|
|
29
|
+
displayBuildPubLogs: false,
|
|
30
|
+
|
|
31
|
+
// JSR-only config
|
|
32
|
+
distJsrAllowDirty: true,
|
|
33
|
+
distJsrBuilder: "jsr",
|
|
34
|
+
distJsrDirName: "dist-jsr",
|
|
35
|
+
distJsrDryRun: false,
|
|
36
|
+
distJsrFailOnWarn: false,
|
|
37
|
+
distJsrGenTsconfig: false,
|
|
38
|
+
distJsrOutFilesExt: "ts",
|
|
39
|
+
distJsrSlowTypes: true,
|
|
40
|
+
|
|
41
|
+
// NPM-only config
|
|
42
|
+
distNpmBuilder: "mkdist",
|
|
43
|
+
distNpmDirName: "dist-npm",
|
|
44
|
+
distNpmOutFilesExt: "js",
|
|
45
|
+
|
|
46
|
+
// Libraries Dler Plugin
|
|
47
|
+
// Publish specific dirs as separate packages
|
|
48
|
+
// This feature is experimental at the moment
|
|
49
|
+
// Please commit your changes before using it
|
|
50
|
+
libsActMode: "main-project-only",
|
|
51
|
+
libsDirDist: "dist-libs",
|
|
52
|
+
libsDirSrc: "src/libs",
|
|
53
|
+
libsList: {},
|
|
54
|
+
|
|
55
|
+
// Specifies what resources to send to npm and jsr registries.
|
|
56
|
+
// coreBuildOutDir (e.g. "bin") dir is automatically included.
|
|
57
|
+
// The following is also included if publishArtifacts is {}:
|
|
58
|
+
// - global: ["package.json", "README.md", "LICENSE"]
|
|
59
|
+
// - dist-jsr,dist-libs/jsr: ["jsr.json"]
|
|
60
|
+
publishArtifacts: {
|
|
61
|
+
global: ["package.json", "README.md", "LICENSE", "LICENSES"],
|
|
62
|
+
"dist-jsr": [],
|
|
63
|
+
"dist-npm": [],
|
|
64
|
+
"dist-libs": {},
|
|
65
|
+
},
|
|
66
|
+
|
|
67
|
+
// Files with these extensions will be built
|
|
68
|
+
// Any other files will be copied as-is to dist
|
|
69
|
+
buildPreExtensions: ["ts", "js"],
|
|
70
|
+
// If you need to exclude some ts/js files from being built,
|
|
71
|
+
// you can store them in the dirs with buildTemplatesDir name
|
|
72
|
+
buildTemplatesDir: "templates",
|
|
73
|
+
|
|
74
|
+
// Dependency filtering
|
|
75
|
+
// Global is always applied
|
|
76
|
+
filterDepsPatterns: {
|
|
77
|
+
global: [
|
|
78
|
+
"@types",
|
|
79
|
+
"biome",
|
|
80
|
+
"knip",
|
|
81
|
+
"eslint",
|
|
82
|
+
"prettier",
|
|
83
|
+
"typescript",
|
|
84
|
+
"@reliverse/rse",
|
|
85
|
+
"@reliverse/dler",
|
|
86
|
+
"!@reliverse/rse-sdk",
|
|
87
|
+
"!@reliverse/dler-sdk",
|
|
88
|
+
],
|
|
89
|
+
"dist-npm": [],
|
|
90
|
+
"dist-jsr": [],
|
|
91
|
+
"dist-libs": {},
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
// Code quality tools
|
|
95
|
+
// Available: tsc, eslint, biome, knip, dler-check
|
|
96
|
+
runBeforeBuild: [],
|
|
97
|
+
// Available: dler-check
|
|
98
|
+
runAfterBuild: [],
|
|
99
|
+
|
|
100
|
+
// Build hooks
|
|
101
|
+
hooksBeforeBuild: [
|
|
102
|
+
// example plugin:
|
|
103
|
+
// async () => {
|
|
104
|
+
// await myCoolPlugin({
|
|
105
|
+
// /* plugin's options */
|
|
106
|
+
// });
|
|
107
|
+
// },
|
|
108
|
+
],
|
|
109
|
+
hooksAfterBuild: [
|
|
110
|
+
// example func:
|
|
111
|
+
// async () => {
|
|
112
|
+
// await applyMagicSpells(["dist-jsr", "dist-npm", "dist-libs"]);
|
|
113
|
+
// }
|
|
114
|
+
],
|
|
115
|
+
|
|
116
|
+
postBuildSettings: {
|
|
117
|
+
deleteDistTmpAfterBuild: true,
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
// Build setup
|
|
121
|
+
// transpileAlias: {},
|
|
122
|
+
// transpileClean: true,
|
|
123
|
+
// transpileEntries: [],
|
|
124
|
+
transpileEsbuild: "es2023",
|
|
125
|
+
// transpileExternals: [],
|
|
126
|
+
transpileFailOnWarn: false,
|
|
127
|
+
transpileFormat: "esm",
|
|
128
|
+
transpileMinify: true,
|
|
129
|
+
// transpileParallel: false,
|
|
130
|
+
transpilePublicPath: "/",
|
|
131
|
+
// transpileReplace: {},
|
|
132
|
+
// transpileRollup: {
|
|
133
|
+
// alias: {},
|
|
134
|
+
// commonjs: {},
|
|
135
|
+
// dts: {},
|
|
136
|
+
// esbuild: {},
|
|
137
|
+
// json: {},
|
|
138
|
+
// replace: {},
|
|
139
|
+
// resolve: {},
|
|
140
|
+
// },
|
|
141
|
+
// transpileShowOutLog: false,
|
|
142
|
+
transpileSourcemap: "none",
|
|
143
|
+
transpileSplitting: false,
|
|
144
|
+
transpileStub: false,
|
|
145
|
+
// transpileStubOptions: { jiti: {} },
|
|
146
|
+
transpileTarget: "node",
|
|
147
|
+
transpileWatch: false,
|
|
148
|
+
// transpileWatchOptions: undefined,
|
|
149
|
+
|
|
150
|
+
// @reliverse/relinka logger setup
|
|
151
|
+
logsFileName: ".logs/relinka.log",
|
|
152
|
+
logsFreshFile: true,
|
|
153
|
+
|
|
154
|
+
// Integrated relinka configuration
|
|
155
|
+
// https://github.com/reliverse/relinka
|
|
156
|
+
relinka: {
|
|
157
|
+
verbose: true,
|
|
158
|
+
|
|
159
|
+
// Timestamp configuration
|
|
160
|
+
timestamp: {
|
|
161
|
+
enabled: false,
|
|
162
|
+
format: "HH:mm:ss",
|
|
163
|
+
},
|
|
164
|
+
|
|
165
|
+
// Control whether logs are saved to a file
|
|
166
|
+
saveLogsToFile: false,
|
|
167
|
+
|
|
168
|
+
// Disable colors in the console
|
|
169
|
+
disableColors: false,
|
|
170
|
+
|
|
171
|
+
// Log file configuration
|
|
172
|
+
logFile: {
|
|
173
|
+
outputPath: "logs.log",
|
|
174
|
+
nameWithDate: "disable",
|
|
175
|
+
freshLogFile: true,
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
// Dirs settings
|
|
179
|
+
dirs: {
|
|
180
|
+
maxLogFiles: 5,
|
|
181
|
+
},
|
|
182
|
+
|
|
183
|
+
levels: {
|
|
184
|
+
success: {
|
|
185
|
+
symbol: "✓",
|
|
186
|
+
fallbackSymbol: "[OK]",
|
|
187
|
+
color: "greenBright",
|
|
188
|
+
spacing: 3,
|
|
189
|
+
},
|
|
190
|
+
info: {
|
|
191
|
+
symbol: "i",
|
|
192
|
+
fallbackSymbol: "[i]",
|
|
193
|
+
color: "cyanBright",
|
|
194
|
+
spacing: 3,
|
|
195
|
+
},
|
|
196
|
+
error: {
|
|
197
|
+
symbol: "✖",
|
|
198
|
+
fallbackSymbol: "[ERR]",
|
|
199
|
+
color: "redBright",
|
|
200
|
+
spacing: 3,
|
|
201
|
+
},
|
|
202
|
+
warn: {
|
|
203
|
+
symbol: "⚠",
|
|
204
|
+
fallbackSymbol: "[WARN]",
|
|
205
|
+
color: "yellowBright",
|
|
206
|
+
spacing: 3,
|
|
207
|
+
},
|
|
208
|
+
fatal: {
|
|
209
|
+
symbol: "‼",
|
|
210
|
+
fallbackSymbol: "[FATAL]",
|
|
211
|
+
color: "redBright",
|
|
212
|
+
spacing: 3,
|
|
213
|
+
},
|
|
214
|
+
verbose: {
|
|
215
|
+
symbol: "✧",
|
|
216
|
+
fallbackSymbol: "[VERBOSE]",
|
|
217
|
+
color: "gray",
|
|
218
|
+
spacing: 3,
|
|
219
|
+
},
|
|
220
|
+
internal: {
|
|
221
|
+
symbol: "⚙",
|
|
222
|
+
fallbackSymbol: "[INTERNAL]",
|
|
223
|
+
color: "magentaBright",
|
|
224
|
+
spacing: 3,
|
|
225
|
+
},
|
|
226
|
+
log: { symbol: "│", fallbackSymbol: "|", color: "dim", spacing: 3 },
|
|
227
|
+
message: {
|
|
228
|
+
symbol: "🞠",
|
|
229
|
+
fallbackSymbol: "[MSG]",
|
|
230
|
+
color: "cyan",
|
|
231
|
+
spacing: 3,
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
// RELIVERSE CONFIG (https://docs.reliverse.org/cli)
|
|
237
|
+
// Restart the CLI to apply your config changes
|
|
238
|
+
$schema: "./schema.json",
|
|
239
|
+
|
|
240
|
+
// General project information
|
|
241
|
+
projectName: "@reliverse/relico",
|
|
242
|
+
projectAuthor: "reliverse",
|
|
243
|
+
projectDescription:
|
|
244
|
+
"relico is a library for creating beautiful and customizable console output in TypeScript and JavaScript projects.",
|
|
245
|
+
version: "1.4.0",
|
|
246
|
+
projectLicense: "MIT",
|
|
247
|
+
projectState: "creating",
|
|
248
|
+
projectRepository: "https://github.com/reliverse/relico",
|
|
249
|
+
projectDomain: "https://reliverse.org",
|
|
250
|
+
projectCategory: "unknown",
|
|
251
|
+
projectSubcategory: "unknown",
|
|
252
|
+
projectTemplate: "unknown",
|
|
253
|
+
projectTemplateDate: "unknown",
|
|
254
|
+
projectArchitecture: "unknown",
|
|
255
|
+
repoPrivacy: "unknown",
|
|
256
|
+
projectGitService: "github",
|
|
257
|
+
projectDeployService: "vercel",
|
|
258
|
+
repoBranch: "main",
|
|
259
|
+
|
|
260
|
+
// Primary tech stack/framework
|
|
261
|
+
projectFramework: "unknown",
|
|
262
|
+
projectPackageManager: "bun",
|
|
263
|
+
projectRuntime: "bun",
|
|
264
|
+
preferredLibraries: {
|
|
265
|
+
stateManagement: "unknown",
|
|
266
|
+
formManagement: "unknown",
|
|
267
|
+
styling: "unknown",
|
|
268
|
+
uiComponents: "unknown",
|
|
269
|
+
testing: "unknown",
|
|
270
|
+
authentication: "unknown",
|
|
271
|
+
databaseLibrary: "unknown",
|
|
272
|
+
databaseProvider: "unknown",
|
|
273
|
+
api: "unknown",
|
|
274
|
+
linting: "unknown",
|
|
275
|
+
formatting: "unknown",
|
|
276
|
+
payment: "unknown",
|
|
277
|
+
analytics: "unknown",
|
|
278
|
+
monitoring: "unknown",
|
|
279
|
+
logging: "unknown",
|
|
280
|
+
forms: "unknown",
|
|
281
|
+
notifications: "unknown",
|
|
282
|
+
search: "unknown",
|
|
283
|
+
uploads: "unknown",
|
|
284
|
+
validation: "unknown",
|
|
285
|
+
documentation: "unknown",
|
|
286
|
+
icons: "unknown",
|
|
287
|
+
mail: "unknown",
|
|
288
|
+
cache: "unknown",
|
|
289
|
+
storage: "unknown",
|
|
290
|
+
cdn: "unknown",
|
|
291
|
+
cms: "unknown",
|
|
292
|
+
i18n: "unknown",
|
|
293
|
+
seo: "unknown",
|
|
294
|
+
motion: "unknown",
|
|
295
|
+
charts: "unknown",
|
|
296
|
+
dates: "unknown",
|
|
297
|
+
markdown: "unknown",
|
|
298
|
+
security: "unknown",
|
|
299
|
+
routing: "unknown",
|
|
300
|
+
},
|
|
301
|
+
monorepo: {
|
|
302
|
+
type: "none",
|
|
303
|
+
packages: [],
|
|
304
|
+
sharedPackages: [],
|
|
305
|
+
},
|
|
306
|
+
|
|
307
|
+
// List dependencies to exclude from checks
|
|
308
|
+
ignoreDependencies: [],
|
|
309
|
+
|
|
310
|
+
// Provide custom additional project details
|
|
311
|
+
// always sent to Reliverse AI Chat & Agents
|
|
312
|
+
customRules: {},
|
|
313
|
+
|
|
314
|
+
// Project features
|
|
315
|
+
features: {
|
|
316
|
+
i18n: false,
|
|
317
|
+
analytics: false,
|
|
318
|
+
themeMode: "dark-light",
|
|
319
|
+
authentication: false,
|
|
320
|
+
api: false,
|
|
321
|
+
database: true,
|
|
322
|
+
testing: true,
|
|
323
|
+
docker: false,
|
|
324
|
+
ci: false,
|
|
325
|
+
commands: [
|
|
326
|
+
"db",
|
|
327
|
+
"pub",
|
|
328
|
+
"knip",
|
|
329
|
+
"latest",
|
|
330
|
+
"check",
|
|
331
|
+
"agg",
|
|
332
|
+
"dev:add",
|
|
333
|
+
"dev:ai",
|
|
334
|
+
"dev:clone",
|
|
335
|
+
"dev:cmod",
|
|
336
|
+
],
|
|
337
|
+
webview: [],
|
|
338
|
+
language: ["typescript"],
|
|
339
|
+
themes: ["default", "eslint", "biome", "uploadthing", "zod", "typebox"],
|
|
340
|
+
},
|
|
341
|
+
|
|
342
|
+
// Code style preferences
|
|
343
|
+
codeStyle: {
|
|
344
|
+
dontRemoveComments: true,
|
|
345
|
+
shouldAddComments: true,
|
|
346
|
+
typeOrInterface: "type",
|
|
347
|
+
importOrRequire: "import",
|
|
348
|
+
quoteMark: "double",
|
|
349
|
+
semicolons: true,
|
|
350
|
+
lineWidth: 80,
|
|
351
|
+
indentStyle: "space",
|
|
352
|
+
indentSize: 2,
|
|
353
|
+
importSymbol: "~",
|
|
354
|
+
trailingCommas: "all",
|
|
355
|
+
bracketSpacing: true,
|
|
356
|
+
arrowParens: "always",
|
|
357
|
+
tabWidth: 2,
|
|
358
|
+
jsToTs: false,
|
|
359
|
+
cjsToEsm: false,
|
|
360
|
+
modernize: {
|
|
361
|
+
replaceFs: false,
|
|
362
|
+
replacePath: false,
|
|
363
|
+
replaceHttp: false,
|
|
364
|
+
replaceProcess: false,
|
|
365
|
+
replaceConsole: false,
|
|
366
|
+
replaceEvents: false,
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
|
|
370
|
+
// Settings for cloning an existing repo
|
|
371
|
+
multipleRepoCloneMode: false,
|
|
372
|
+
customUserFocusedRepos: [],
|
|
373
|
+
customDevsFocusedRepos: [],
|
|
374
|
+
hideRepoSuggestions: false,
|
|
375
|
+
customReposOnNewProject: false,
|
|
376
|
+
|
|
377
|
+
// Set to false to disable opening the browser during env composing
|
|
378
|
+
envComposerOpenBrowser: true,
|
|
379
|
+
|
|
380
|
+
// Enable auto-answering for prompts to skip manual confirmations.
|
|
381
|
+
// Make sure you have unknown values configured above.
|
|
382
|
+
skipPromptsUseAutoBehavior: false,
|
|
383
|
+
|
|
384
|
+
// Prompt behavior for deployment
|
|
385
|
+
// Options: prompt | autoYes | autoNo
|
|
386
|
+
deployBehavior: "prompt",
|
|
387
|
+
depsBehavior: "prompt",
|
|
388
|
+
gitBehavior: "prompt",
|
|
389
|
+
i18nBehavior: "prompt",
|
|
390
|
+
scriptsBehavior: "prompt",
|
|
391
|
+
|
|
392
|
+
// Behavior for existing GitHub repos during project creation
|
|
393
|
+
// Options: prompt | autoYes | autoYesSkipCommit | autoNo
|
|
394
|
+
existingRepoBehavior: "prompt",
|
|
395
|
+
|
|
396
|
+
// Behavior for Reliverse AI Chat & Agents
|
|
397
|
+
// Options: promptOnce | promptEachFile | autoYes
|
|
398
|
+
relinterConfirm: "promptOnce",
|
|
399
|
+
});
|