rnsup 1.0.2 → 1.0.4
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 +139 -229
- package/dist/commands/generateComponent.js +38 -24
- package/dist/commands/generateFolder.js +2 -1
- package/dist/commands/generateScreen.js +35 -10
- package/dist/commands/setup.js +2 -1
- package/dist/commands/viewStructure.js +91 -0
- package/dist/index.js +10 -1
- package/dist/templates/componentTemplates.js +99 -0
- package/dist/templates/screenTemplates.js +342 -0
- package/dist/utils/selectPrompt.js +13 -24
- package/dist/utils/treeGenerator.js +170 -0
- package/package.json +2 -2
|
@@ -0,0 +1,170 @@
|
|
|
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.buildTree = buildTree;
|
|
7
|
+
exports.formatFileSize = formatFileSize;
|
|
8
|
+
exports.formatTime = formatTime;
|
|
9
|
+
exports.getFileTypeColor = getFileTypeColor;
|
|
10
|
+
exports.colorize = colorize;
|
|
11
|
+
exports.formatTree = formatTree;
|
|
12
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
async function getDirectoryTree(dirPath, baseDir, level = 0, maxDepth = 10, ignorePatterns = ['node_modules', '.git', 'dist', 'build', '.rnsup']) {
|
|
16
|
+
const nodes = [];
|
|
17
|
+
if (level > maxDepth)
|
|
18
|
+
return nodes;
|
|
19
|
+
try {
|
|
20
|
+
const entries = await fs_extra_1.default.readdir(dirPath, { withFileTypes: true });
|
|
21
|
+
const filtered = entries.filter(entry => {
|
|
22
|
+
return !ignorePatterns.includes(entry.name) && !entry.name.startsWith('.');
|
|
23
|
+
});
|
|
24
|
+
// Sort: directories first, then alphabetically
|
|
25
|
+
const sorted = filtered.sort((a, b) => {
|
|
26
|
+
if (a.isDirectory() !== b.isDirectory()) {
|
|
27
|
+
return b.isDirectory() ? 1 : -1;
|
|
28
|
+
}
|
|
29
|
+
return a.name.localeCompare(b.name);
|
|
30
|
+
});
|
|
31
|
+
for (const entry of sorted) {
|
|
32
|
+
const fullPath = path_1.default.join(dirPath, entry.name);
|
|
33
|
+
const relativePath = path_1.default.relative(baseDir, fullPath);
|
|
34
|
+
let size;
|
|
35
|
+
let mtime;
|
|
36
|
+
try {
|
|
37
|
+
const stats = await fs_extra_1.default.stat(fullPath);
|
|
38
|
+
if (!entry.isDirectory()) {
|
|
39
|
+
size = stats.size;
|
|
40
|
+
}
|
|
41
|
+
mtime = stats.mtime || stats.birthtime;
|
|
42
|
+
}
|
|
43
|
+
catch { }
|
|
44
|
+
nodes.push({
|
|
45
|
+
name: entry.name,
|
|
46
|
+
level,
|
|
47
|
+
isDir: entry.isDirectory(),
|
|
48
|
+
path: fullPath,
|
|
49
|
+
size,
|
|
50
|
+
relativePath,
|
|
51
|
+
mtime
|
|
52
|
+
});
|
|
53
|
+
if (entry.isDirectory()) {
|
|
54
|
+
const subNodes = await getDirectoryTree(fullPath, baseDir, level + 1, maxDepth, ignorePatterns);
|
|
55
|
+
nodes.push(...subNodes);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
console.error(`Error reading directory ${dirPath}:`, err);
|
|
61
|
+
}
|
|
62
|
+
return nodes;
|
|
63
|
+
}
|
|
64
|
+
async function buildTree(dirPath, maxDepth = 10) {
|
|
65
|
+
return getDirectoryTree(dirPath, dirPath, 0, maxDepth);
|
|
66
|
+
}
|
|
67
|
+
function formatFileSize(bytes) {
|
|
68
|
+
if (!bytes)
|
|
69
|
+
return '';
|
|
70
|
+
if (bytes < 1024)
|
|
71
|
+
return `${bytes}B`;
|
|
72
|
+
if (bytes < 1024 * 1024)
|
|
73
|
+
return `${(bytes / 1024).toFixed(1)}KB`;
|
|
74
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)}MB`;
|
|
75
|
+
}
|
|
76
|
+
function formatTime(date) {
|
|
77
|
+
if (!date)
|
|
78
|
+
return '';
|
|
79
|
+
const now = new Date();
|
|
80
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
81
|
+
const fileDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
82
|
+
const timeFormat = date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' });
|
|
83
|
+
if (fileDate.getTime() === today.getTime()) {
|
|
84
|
+
return `Today ${timeFormat}`;
|
|
85
|
+
}
|
|
86
|
+
return date.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }) + ` ${timeFormat}`;
|
|
87
|
+
}
|
|
88
|
+
function getFileTypeColor(filename) {
|
|
89
|
+
const ext = path_1.default.extname(filename).toLowerCase();
|
|
90
|
+
switch (ext) {
|
|
91
|
+
// TypeScript / JavaScript
|
|
92
|
+
case '.ts':
|
|
93
|
+
case '.tsx':
|
|
94
|
+
return (text) => chalk_1.default.blue(text);
|
|
95
|
+
case '.js':
|
|
96
|
+
case '.jsx':
|
|
97
|
+
return (text) => chalk_1.default.yellow(text);
|
|
98
|
+
// JSON
|
|
99
|
+
case '.json':
|
|
100
|
+
return (text) => chalk_1.default.greenBright(text);
|
|
101
|
+
// Styles
|
|
102
|
+
case '.css':
|
|
103
|
+
case '.scss':
|
|
104
|
+
case '.less':
|
|
105
|
+
return (text) => chalk_1.default.magenta(text);
|
|
106
|
+
// Images
|
|
107
|
+
case '.png':
|
|
108
|
+
case '.jpg':
|
|
109
|
+
case '.jpeg':
|
|
110
|
+
case '.gif':
|
|
111
|
+
case '.svg':
|
|
112
|
+
return (text) => chalk_1.default.cyan(text);
|
|
113
|
+
// Config files
|
|
114
|
+
case '.yml':
|
|
115
|
+
case '.yaml':
|
|
116
|
+
case '.xml':
|
|
117
|
+
return (text) => chalk_1.default.red(text);
|
|
118
|
+
// Markdown
|
|
119
|
+
case '.md':
|
|
120
|
+
case '.mdx':
|
|
121
|
+
return (text) => chalk_1.default.gray(text);
|
|
122
|
+
default:
|
|
123
|
+
return (text) => chalk_1.default.white(text);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
function colorize(text, isDir, filename) {
|
|
127
|
+
if (isDir) {
|
|
128
|
+
return chalk_1.default.cyan.bold(text);
|
|
129
|
+
}
|
|
130
|
+
if (filename) {
|
|
131
|
+
const colorFunc = getFileTypeColor(filename);
|
|
132
|
+
return colorFunc(text);
|
|
133
|
+
}
|
|
134
|
+
return chalk_1.default.white(text);
|
|
135
|
+
}
|
|
136
|
+
function formatTree(nodes, options = {}) {
|
|
137
|
+
const { pretty = true, showTime = false } = options;
|
|
138
|
+
if (nodes.length === 0)
|
|
139
|
+
return '';
|
|
140
|
+
let output = '';
|
|
141
|
+
const stack = [];
|
|
142
|
+
for (let i = 0; i < nodes.length; i++) {
|
|
143
|
+
const node = nodes[i];
|
|
144
|
+
const nextNode = nodes[i + 1];
|
|
145
|
+
const isLast = !nextNode || nextNode.level <= node.level;
|
|
146
|
+
let prefix = '';
|
|
147
|
+
if (node.level === 0) {
|
|
148
|
+
prefix = '';
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
for (let j = 0; j < node.level - 1; j++) {
|
|
152
|
+
const parentIsLast = stack[j]?.isLast ?? true;
|
|
153
|
+
prefix += parentIsLast ? ' ' : '│ ';
|
|
154
|
+
}
|
|
155
|
+
prefix += isLast ? '└── ' : '├── ';
|
|
156
|
+
}
|
|
157
|
+
let icon = '';
|
|
158
|
+
if (pretty) {
|
|
159
|
+
icon = node.isDir ? '📁 ' : '📄 ';
|
|
160
|
+
}
|
|
161
|
+
const name = colorize(node.name, node.isDir, node.name);
|
|
162
|
+
const size = node.size && pretty ? ` ${chalk_1.default.dim(`(${formatFileSize(node.size)})`)}` : '';
|
|
163
|
+
const time = showTime && node.mtime ? ` ${chalk_1.default.dim(formatTime(node.mtime))}` : '';
|
|
164
|
+
output += `${prefix}${icon}${name}${size}${time}\n`;
|
|
165
|
+
if (node.level > 0) {
|
|
166
|
+
stack[node.level - 1] = { level: node.level, isLast };
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return output;
|
|
170
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rnsup",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "RNSUP is a CLI tool that converts a fresh React Native CLI project into a production-ready architecture with navigation, alias paths, utilities and code generators.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"commander": "^14.0.3",
|
|
56
56
|
"execa": "^9.6.1",
|
|
57
57
|
"fs-extra": "^11.3.3",
|
|
58
|
-
"inquirer": "^
|
|
58
|
+
"inquirer": "^8.2.6",
|
|
59
59
|
"ora": "^9.3.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|