andrud 1.0.1 → 1.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/README.md +295 -306
- package/dist/__tests__/context.test.d.ts +5 -0
- package/dist/__tests__/context.test.d.ts.map +1 -0
- package/dist/__tests__/context.test.js +86 -0
- package/dist/__tests__/context.test.js.map +1 -0
- package/dist/__tests__/generator.test.d.ts +5 -0
- package/dist/__tests__/generator.test.d.ts.map +1 -0
- package/dist/__tests__/generator.test.js +83 -0
- package/dist/__tests__/generator.test.js.map +1 -0
- package/dist/__tests__/validation.test.d.ts +5 -0
- package/dist/__tests__/validation.test.d.ts.map +1 -0
- package/dist/__tests__/validation.test.js +81 -0
- package/dist/__tests__/validation.test.js.map +1 -0
- package/dist/cli/commands/create.d.ts +10 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +203 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/info.d.ts +13 -0
- package/dist/cli/commands/info.d.ts.map +1 -0
- package/dist/cli/commands/info.js +153 -0
- package/dist/cli/commands/info.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +141 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/list.d.ts +18 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +122 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/new.d.ts +22 -0
- package/dist/cli/commands/new.d.ts.map +1 -0
- package/dist/cli/commands/new.js +245 -0
- package/dist/cli/commands/new.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +99 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/config.d.ts +89 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +151 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +47 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +175 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/generator.d.ts +44 -0
- package/dist/core/generator.d.ts.map +1 -0
- package/{src/core/generator.ts → dist/core/generator.js} +394 -484
- package/dist/core/generator.js.map +1 -0
- package/dist/core/types.d.ts +125 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +22 -0
- package/dist/core/types.js.map +1 -0
- package/dist/templates/index.d.ts +36 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +141 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/ui/colors.d.ts +40 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +117 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/output.d.ts +69 -0
- package/dist/ui/output.d.ts.map +1 -0
- package/dist/ui/output.js +199 -0
- package/dist/ui/output.js.map +1 -0
- package/dist/ui/prompts.d.ts +20 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +118 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/spinners.d.ts +30 -0
- package/dist/ui/spinners.d.ts.map +1 -0
- package/dist/ui/spinners.js +74 -0
- package/dist/ui/spinners.js.map +1 -0
- package/dist/ui/types.d.ts +35 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +5 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/utils/filesystem.d.ts +38 -0
- package/dist/utils/filesystem.d.ts.map +1 -0
- package/dist/utils/filesystem.js +181 -0
- package/dist/utils/filesystem.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +52 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/object.d.ts +140 -0
- package/dist/utils/object.d.ts.map +1 -0
- package/dist/utils/object.js +385 -0
- package/dist/utils/object.js.map +1 -0
- package/dist/utils/validation.d.ts +35 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +270 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +10 -21
- package/CHANGELOG.md +0 -70
- package/CONTRIBUTING.md +0 -132
- package/sc.png +0 -0
- package/src/__tests__/context.test.ts +0 -133
- package/src/__tests__/generator.test.ts +0 -107
- package/src/__tests__/validation.test.ts +0 -105
- package/src/cli/commands/create.ts +0 -252
- package/src/cli/commands/info.ts +0 -178
- package/src/cli/commands/init.ts +0 -186
- package/src/cli/commands/list.ts +0 -156
- package/src/cli/commands/new.ts +0 -316
- package/src/cli/index.ts +0 -116
- package/src/core/config.ts +0 -172
- package/src/core/context.ts +0 -212
- package/src/core/types.ts +0 -184
- package/src/templates/index.ts +0 -162
- package/src/types/gradient-string.d.ts +0 -25
- package/src/ui/colors.ts +0 -139
- package/src/ui/output.ts +0 -230
- package/src/ui/prompts.ts +0 -170
- package/src/ui/spinners.ts +0 -95
- package/src/ui/types.ts +0 -41
- package/src/utils/filesystem.ts +0 -222
- package/src/utils/logger.ts +0 -67
- package/src/utils/object.ts +0 -456
- package/src/utils/validation.ts +0 -345
- package/tsconfig.json +0 -25
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File system utilities using fs-extra
|
|
3
|
+
*/
|
|
4
|
+
import fse from 'fs-extra';
|
|
5
|
+
import { resolve, join, dirname, basename, extname, relative, normalize, isAbsolute } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
7
|
+
// Check if path exists
|
|
8
|
+
export async function exists(path) {
|
|
9
|
+
try {
|
|
10
|
+
await fse.access(path);
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// Check if path is a directory
|
|
18
|
+
export async function isDirectory(path) {
|
|
19
|
+
try {
|
|
20
|
+
const stats = await fse.stat(path);
|
|
21
|
+
return stats.isDirectory();
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Check if path is a file
|
|
28
|
+
export async function isFile(path) {
|
|
29
|
+
try {
|
|
30
|
+
const stats = await fse.stat(path);
|
|
31
|
+
return stats.isFile();
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Read file content
|
|
38
|
+
export async function readFile(path) {
|
|
39
|
+
return fse.readFile(path, 'utf-8');
|
|
40
|
+
}
|
|
41
|
+
// Write file content
|
|
42
|
+
export async function writeFile(path, content) {
|
|
43
|
+
await fse.writeFile(path, content, 'utf-8');
|
|
44
|
+
}
|
|
45
|
+
// Read JSON file
|
|
46
|
+
export async function readJson(path) {
|
|
47
|
+
return fse.readJson(path);
|
|
48
|
+
}
|
|
49
|
+
// Write JSON file
|
|
50
|
+
export async function writeJson(path, data, spaces = 2) {
|
|
51
|
+
await fse.writeJson(path, data, { spaces });
|
|
52
|
+
}
|
|
53
|
+
// Copy file
|
|
54
|
+
export async function copyFile(source, destination) {
|
|
55
|
+
await fse.copy(source, destination);
|
|
56
|
+
}
|
|
57
|
+
// Move file
|
|
58
|
+
export async function moveFile(source, destination) {
|
|
59
|
+
await fse.move(source, destination);
|
|
60
|
+
}
|
|
61
|
+
// Remove file
|
|
62
|
+
export async function removeFile(path) {
|
|
63
|
+
try {
|
|
64
|
+
await fse.remove(path);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore errors if file doesn't exist
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Create directory
|
|
71
|
+
export async function createDirectory(path) {
|
|
72
|
+
await fse.mkdir(path, { recursive: true });
|
|
73
|
+
}
|
|
74
|
+
// Remove directory
|
|
75
|
+
export async function removeDirectory(path) {
|
|
76
|
+
try {
|
|
77
|
+
await fse.remove(path);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore errors if directory doesn't exist
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
// Copy directory
|
|
84
|
+
export async function copyDirectory(source, destination) {
|
|
85
|
+
await fse.copy(source, destination);
|
|
86
|
+
}
|
|
87
|
+
// Ensure directory exists
|
|
88
|
+
export async function ensureDirectory(path) {
|
|
89
|
+
await fse.ensureDir(path);
|
|
90
|
+
}
|
|
91
|
+
// Ensure file exists (creates empty file if it doesn't)
|
|
92
|
+
export async function ensureFile(path) {
|
|
93
|
+
await fse.ensureFile(path);
|
|
94
|
+
}
|
|
95
|
+
// Get absolute path
|
|
96
|
+
export function getAbsolutePath(path) {
|
|
97
|
+
if (isAbsolute(path)) {
|
|
98
|
+
return normalize(path);
|
|
99
|
+
}
|
|
100
|
+
return resolve(getCurrentWorkingDirectory(), path);
|
|
101
|
+
}
|
|
102
|
+
// Normalize path
|
|
103
|
+
export function normalizePath(path) {
|
|
104
|
+
return normalize(path);
|
|
105
|
+
}
|
|
106
|
+
// Join path segments
|
|
107
|
+
export function joinPath(...paths) {
|
|
108
|
+
return join(...paths);
|
|
109
|
+
}
|
|
110
|
+
// Get directory name
|
|
111
|
+
export function dirnamePath(path) {
|
|
112
|
+
return dirname(path);
|
|
113
|
+
}
|
|
114
|
+
// Get base name
|
|
115
|
+
export function basenamePath(path, ext) {
|
|
116
|
+
return basename(path, ext);
|
|
117
|
+
}
|
|
118
|
+
// Get extension
|
|
119
|
+
export function extnamePath(path) {
|
|
120
|
+
return extname(path);
|
|
121
|
+
}
|
|
122
|
+
// Get relative path
|
|
123
|
+
export function relativePath(from, to) {
|
|
124
|
+
return relative(from, to);
|
|
125
|
+
}
|
|
126
|
+
// Get current working directory
|
|
127
|
+
export function getCurrentWorkingDirectory() {
|
|
128
|
+
return process.cwd();
|
|
129
|
+
}
|
|
130
|
+
// Get package root directory
|
|
131
|
+
export function getPackageRoot() {
|
|
132
|
+
const currentFile = import.meta.url;
|
|
133
|
+
if (currentFile.startsWith('file://')) {
|
|
134
|
+
const currentDir = fileURLToPath(new URL('.', currentFile));
|
|
135
|
+
return resolve(currentDir, '..');
|
|
136
|
+
}
|
|
137
|
+
return getCurrentWorkingDirectory();
|
|
138
|
+
}
|
|
139
|
+
// List files in directory
|
|
140
|
+
export async function listFiles(directory, extensions) {
|
|
141
|
+
const files = [];
|
|
142
|
+
async function walk(dir) {
|
|
143
|
+
const entries = await fse.readdir(dir, { withFileTypes: true });
|
|
144
|
+
for (const entry of entries) {
|
|
145
|
+
const fullPath = join(dir, entry.name);
|
|
146
|
+
if (entry.isDirectory()) {
|
|
147
|
+
await walk(fullPath);
|
|
148
|
+
}
|
|
149
|
+
else if (entry.isFile()) {
|
|
150
|
+
if (!extensions || extensions.some(ext => entry.name.endsWith(ext))) {
|
|
151
|
+
files.push(fullPath);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
await walk(directory);
|
|
157
|
+
return files;
|
|
158
|
+
}
|
|
159
|
+
// Read directory contents
|
|
160
|
+
export async function readDirectory(directory) {
|
|
161
|
+
return fse.readdir(directory);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Write file with timeout protection
|
|
165
|
+
*/
|
|
166
|
+
export async function writeFileWithTimeout(path, content, timeoutMs = 5000) {
|
|
167
|
+
return Promise.race([
|
|
168
|
+
writeFile(path, content),
|
|
169
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Write operation timeout after ${timeoutMs}ms`)), timeoutMs))
|
|
170
|
+
]);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Create directory with timeout protection
|
|
174
|
+
*/
|
|
175
|
+
export async function createDirectoryWithTimeout(path, timeoutMs = 5000) {
|
|
176
|
+
return Promise.race([
|
|
177
|
+
createDirectory(path),
|
|
178
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Create directory operation timeout after ${timeoutMs}ms`)), timeoutMs))
|
|
179
|
+
]);
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=filesystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/utils/filesystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging utilities with structured logging levels
|
|
3
|
+
*/
|
|
4
|
+
export declare enum LogLevel {
|
|
5
|
+
DEBUG = 0,
|
|
6
|
+
INFO = 1,
|
|
7
|
+
WARN = 2,
|
|
8
|
+
ERROR = 3
|
|
9
|
+
}
|
|
10
|
+
export interface LoggerOptions {
|
|
11
|
+
level?: LogLevel;
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class Logger {
|
|
15
|
+
private level;
|
|
16
|
+
private verbose;
|
|
17
|
+
constructor(options?: LoggerOptions);
|
|
18
|
+
debug(message: string, data?: unknown): void;
|
|
19
|
+
info(message: string, data?: unknown): void;
|
|
20
|
+
warn(message: string, data?: unknown): void;
|
|
21
|
+
error(message: string, error?: Error | string): void;
|
|
22
|
+
success(message: string): void;
|
|
23
|
+
setLevel(level: LogLevel): void;
|
|
24
|
+
setVerbose(verbose: boolean): void;
|
|
25
|
+
}
|
|
26
|
+
export declare const defaultLogger: Logger;
|
|
27
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,oBAAY,QAAQ;IAClB,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,GAAE,aAAkB;IAKvC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM5C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAM3C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI;IAIpD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAI9B,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGnC;AAGD,eAAO,MAAM,aAAa,QAGxB,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logging utilities with structured logging levels
|
|
3
|
+
*/
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
export var LogLevel;
|
|
6
|
+
(function (LogLevel) {
|
|
7
|
+
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
|
|
8
|
+
LogLevel[LogLevel["INFO"] = 1] = "INFO";
|
|
9
|
+
LogLevel[LogLevel["WARN"] = 2] = "WARN";
|
|
10
|
+
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
|
|
11
|
+
})(LogLevel || (LogLevel = {}));
|
|
12
|
+
export class Logger {
|
|
13
|
+
level;
|
|
14
|
+
verbose;
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
this.level = options.level ?? LogLevel.INFO;
|
|
17
|
+
this.verbose = options.verbose ?? false;
|
|
18
|
+
}
|
|
19
|
+
debug(message, data) {
|
|
20
|
+
if (this.level <= LogLevel.DEBUG) {
|
|
21
|
+
console.log(pc.gray(`[DEBUG] ${message}`), data ?? '');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
info(message, data) {
|
|
25
|
+
if (this.level <= LogLevel.INFO) {
|
|
26
|
+
console.log(pc.blue(`[INFO] ${message}`), data ?? '');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
warn(message, data) {
|
|
30
|
+
if (this.level <= LogLevel.WARN) {
|
|
31
|
+
console.log(pc.yellow(`[WARN] ${message}`), data ?? '');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
error(message, error) {
|
|
35
|
+
console.error(pc.red(`[ERROR] ${message}`), error ?? '');
|
|
36
|
+
}
|
|
37
|
+
success(message) {
|
|
38
|
+
console.log(pc.green(`[SUCCESS] ${message}`));
|
|
39
|
+
}
|
|
40
|
+
setLevel(level) {
|
|
41
|
+
this.level = level;
|
|
42
|
+
}
|
|
43
|
+
setVerbose(verbose) {
|
|
44
|
+
this.verbose = verbose;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// Create default logger instance
|
|
48
|
+
export const defaultLogger = new Logger({
|
|
49
|
+
level: process.env.DEBUG ? LogLevel.DEBUG : LogLevel.INFO,
|
|
50
|
+
verbose: process.env.VERBOSE === 'true'
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;AACX,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB;AAOD,MAAM,OAAO,MAAM;IACT,KAAK,CAAW;IAChB,OAAO,CAAU;IAEzB,YAAY,UAAyB,EAAE;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAAc;QACnC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAAc;QAClC,IAAI,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,KAAsB;QAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED,iCAAiC;AACjC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC;IACtC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;IACzD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,MAAM;CACxC,CAAC,CAAC"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object and array utilities
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Deep merge objects
|
|
6
|
+
*/
|
|
7
|
+
export declare function merge<T extends object>(target: T, ...sources: Partial<T>[]): T;
|
|
8
|
+
/**
|
|
9
|
+
* Omit keys from object
|
|
10
|
+
*/
|
|
11
|
+
export declare function omit<T extends object, K extends keyof T>(obj: T, keys: K[]): Omit<T, K>;
|
|
12
|
+
/**
|
|
13
|
+
* Pick keys from object
|
|
14
|
+
*/
|
|
15
|
+
export declare function pick<T extends object, K extends keyof T>(obj: T, keys: K[]): Pick<T, K>;
|
|
16
|
+
/**
|
|
17
|
+
* Invert object keys and values
|
|
18
|
+
*/
|
|
19
|
+
export declare function invert<T extends Record<string, string | number>>(obj: T): Record<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Map values of object
|
|
22
|
+
*/
|
|
23
|
+
export declare function mapValues<T extends object, U>(obj: T, fn: (value: T[keyof T], key: keyof T) => U): Record<keyof T, U>;
|
|
24
|
+
/**
|
|
25
|
+
* Filter object keys
|
|
26
|
+
*/
|
|
27
|
+
export declare function filterKeys<T extends object>(obj: T, fn: (key: keyof T) => boolean): Partial<T>;
|
|
28
|
+
/**
|
|
29
|
+
* Group array items by key
|
|
30
|
+
*/
|
|
31
|
+
export declare function groupBy<T, K extends string | number>(array: T[], keyFn: (item: T) => K): Record<K, T[]>;
|
|
32
|
+
/**
|
|
33
|
+
* Get unique values
|
|
34
|
+
*/
|
|
35
|
+
export declare function unique<T>(array: T[]): T[];
|
|
36
|
+
/**
|
|
37
|
+
* Get unique values by predicate
|
|
38
|
+
*/
|
|
39
|
+
export declare function uniqueBy<T>(array: T[], predicate: (item: T) => unknown): T[];
|
|
40
|
+
/**
|
|
41
|
+
* Split array into chunks
|
|
42
|
+
*/
|
|
43
|
+
export declare function chunk<T>(array: T[], size: number): T[][];
|
|
44
|
+
/**
|
|
45
|
+
* Flatten array one level
|
|
46
|
+
*/
|
|
47
|
+
export declare function flatten<T>(array: (T | T[])[]): T[];
|
|
48
|
+
/**
|
|
49
|
+
* Deep flatten nested array
|
|
50
|
+
*/
|
|
51
|
+
export declare function flattenDeep<T>(array: (T | T[])[]): T[];
|
|
52
|
+
/**
|
|
53
|
+
* Get difference between arrays
|
|
54
|
+
*/
|
|
55
|
+
export declare function difference<T>(a: T[], b: T[]): T[];
|
|
56
|
+
/**
|
|
57
|
+
* Get intersection of arrays
|
|
58
|
+
*/
|
|
59
|
+
export declare function intersection<T>(a: T[], b: T[]): T[];
|
|
60
|
+
/**
|
|
61
|
+
* Get union of arrays
|
|
62
|
+
*/
|
|
63
|
+
export declare function union<T>(...arrays: T[][]): T[];
|
|
64
|
+
/**
|
|
65
|
+
* Sort array by key
|
|
66
|
+
*/
|
|
67
|
+
export declare function sortBy<T>(array: T[], keyFn: (item: T) => unknown | unknown[]): T[];
|
|
68
|
+
/**
|
|
69
|
+
* Partition array by predicate
|
|
70
|
+
*/
|
|
71
|
+
export declare function partition<T>(array: T[], predicate: (item: T) => boolean): [T[], T[]];
|
|
72
|
+
/**
|
|
73
|
+
* Remove falsy values from array
|
|
74
|
+
*/
|
|
75
|
+
export declare function compact<T>(array: (T | null | undefined | false | '' | 0)[]): T[];
|
|
76
|
+
/**
|
|
77
|
+
* Zip arrays together
|
|
78
|
+
*/
|
|
79
|
+
export declare function zip<T, U>(a: T[], b: U[]): Array<[T, U]>;
|
|
80
|
+
/**
|
|
81
|
+
* Unzip zipped arrays
|
|
82
|
+
*/
|
|
83
|
+
export declare function unzip<T, U>(zipped: Array<[T, U]>): [T[], U[]];
|
|
84
|
+
/**
|
|
85
|
+
* Generate range of numbers
|
|
86
|
+
*/
|
|
87
|
+
export declare function range(start: number, end?: number, step?: number): number[];
|
|
88
|
+
/**
|
|
89
|
+
* Generate array of repeated values
|
|
90
|
+
*/
|
|
91
|
+
export declare function times<T>(n: number, fn: (index: number) => T): T[];
|
|
92
|
+
/**
|
|
93
|
+
* Clamp number between min and max
|
|
94
|
+
*/
|
|
95
|
+
export declare function clamp(value: number, min: number, max: number): number;
|
|
96
|
+
/**
|
|
97
|
+
* Generate random integer between min and max
|
|
98
|
+
*/
|
|
99
|
+
export declare function randomInt(min: number, max: number): number;
|
|
100
|
+
/**
|
|
101
|
+
* Get random element from array
|
|
102
|
+
*/
|
|
103
|
+
export declare function randomElement<T>(array: T[]): T | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Shuffle array in place
|
|
106
|
+
*/
|
|
107
|
+
export declare function shuffle<T>(array: T[]): T[];
|
|
108
|
+
/**
|
|
109
|
+
* Sleep for specified milliseconds
|
|
110
|
+
*/
|
|
111
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
112
|
+
export interface RetryOptions {
|
|
113
|
+
retries?: number;
|
|
114
|
+
delay?: number;
|
|
115
|
+
backoff?: number;
|
|
116
|
+
onRetry?: (error: Error, attempt: number) => void;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Retry function on failure
|
|
120
|
+
*/
|
|
121
|
+
export declare function retry<T>(fn: () => Promise<T>, options?: RetryOptions): Promise<T>;
|
|
122
|
+
/**
|
|
123
|
+
* Memoize function results
|
|
124
|
+
*/
|
|
125
|
+
export declare function memoize<T extends (...args: unknown[]) => unknown>(fn: T): T & {
|
|
126
|
+
clear: () => void;
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Deep clone an object
|
|
130
|
+
*/
|
|
131
|
+
export declare function deepClone<T>(obj: T): T;
|
|
132
|
+
/**
|
|
133
|
+
* Deep equality check
|
|
134
|
+
*/
|
|
135
|
+
export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
136
|
+
/**
|
|
137
|
+
* Deep merge objects
|
|
138
|
+
*/
|
|
139
|
+
export declare function deepMerge<T extends object>(target: T, ...sources: Partial<T>[]): T;
|
|
140
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAuB9E;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAIvF;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAMvF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMhG;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAC3C,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,GACzC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAMpB;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,GAAG,EAAE,CAAC,EACN,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,OAAO,GAC5B,OAAO,CAAC,CAAC,CAAC,CAQZ;AAID;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,EAClD,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GACpB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAShB;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEzC;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,EAAE,CAU5E;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE,CAMxD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAUlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGtD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAGnD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,EAAE,GAAG,CAAC,EAAE,CAQlF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAWpF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAEhF;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAWvD;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAQ7D;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,MAAM,EAAE,CAU7E;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAEjE;AAID;;GAEG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,SAAS,CAG1D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAY1C;AAID;;GAEG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,CAAC,CAAC,CA0BZ;AAID;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,EAC/D,EAAE,EAAE,CAAC,GACJ,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,IAAI,CAAA;CAAE,CAc3B;AAID;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAsBtC;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAsBzD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAElF"}
|