andrud 1.0.1 → 1.0.3

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.
Files changed (121) hide show
  1. package/README.md +295 -306
  2. package/dist/__tests__/context.test.d.ts +5 -0
  3. package/dist/__tests__/context.test.d.ts.map +1 -0
  4. package/dist/__tests__/context.test.js +86 -0
  5. package/dist/__tests__/context.test.js.map +1 -0
  6. package/dist/__tests__/generator.test.d.ts +5 -0
  7. package/dist/__tests__/generator.test.d.ts.map +1 -0
  8. package/dist/__tests__/generator.test.js +83 -0
  9. package/dist/__tests__/generator.test.js.map +1 -0
  10. package/dist/__tests__/validation.test.d.ts +5 -0
  11. package/dist/__tests__/validation.test.d.ts.map +1 -0
  12. package/dist/__tests__/validation.test.js +81 -0
  13. package/dist/__tests__/validation.test.js.map +1 -0
  14. package/dist/cli/commands/create.d.ts +10 -0
  15. package/dist/cli/commands/create.d.ts.map +1 -0
  16. package/dist/cli/commands/create.js +203 -0
  17. package/dist/cli/commands/create.js.map +1 -0
  18. package/dist/cli/commands/info.d.ts +13 -0
  19. package/dist/cli/commands/info.d.ts.map +1 -0
  20. package/dist/cli/commands/info.js +153 -0
  21. package/dist/cli/commands/info.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +15 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +141 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/list.d.ts +18 -0
  27. package/dist/cli/commands/list.d.ts.map +1 -0
  28. package/dist/cli/commands/list.js +122 -0
  29. package/dist/cli/commands/list.js.map +1 -0
  30. package/dist/cli/commands/new.d.ts +22 -0
  31. package/dist/cli/commands/new.d.ts.map +1 -0
  32. package/dist/cli/commands/new.js +245 -0
  33. package/dist/cli/commands/new.js.map +1 -0
  34. package/dist/cli/index.d.ts +5 -0
  35. package/dist/cli/index.d.ts.map +1 -0
  36. package/dist/cli/index.js +157 -0
  37. package/dist/cli/index.js.map +1 -0
  38. package/dist/core/config.d.ts +89 -0
  39. package/dist/core/config.d.ts.map +1 -0
  40. package/dist/core/config.js +151 -0
  41. package/dist/core/config.js.map +1 -0
  42. package/dist/core/context.d.ts +47 -0
  43. package/dist/core/context.d.ts.map +1 -0
  44. package/dist/core/context.js +175 -0
  45. package/dist/core/context.js.map +1 -0
  46. package/dist/core/generator.d.ts +44 -0
  47. package/dist/core/generator.d.ts.map +1 -0
  48. package/{src/core/generator.ts → dist/core/generator.js} +394 -484
  49. package/dist/core/generator.js.map +1 -0
  50. package/dist/core/types.d.ts +125 -0
  51. package/dist/core/types.d.ts.map +1 -0
  52. package/dist/core/types.js +22 -0
  53. package/dist/core/types.js.map +1 -0
  54. package/dist/templates/index.d.ts +36 -0
  55. package/dist/templates/index.d.ts.map +1 -0
  56. package/dist/templates/index.js +141 -0
  57. package/dist/templates/index.js.map +1 -0
  58. package/dist/ui/colors.d.ts +40 -0
  59. package/dist/ui/colors.d.ts.map +1 -0
  60. package/dist/ui/colors.js +117 -0
  61. package/dist/ui/colors.js.map +1 -0
  62. package/dist/ui/output.d.ts +69 -0
  63. package/dist/ui/output.d.ts.map +1 -0
  64. package/dist/ui/output.js +199 -0
  65. package/dist/ui/output.js.map +1 -0
  66. package/dist/ui/prompts.d.ts +20 -0
  67. package/dist/ui/prompts.d.ts.map +1 -0
  68. package/dist/ui/prompts.js +118 -0
  69. package/dist/ui/prompts.js.map +1 -0
  70. package/dist/ui/spinners.d.ts +30 -0
  71. package/dist/ui/spinners.d.ts.map +1 -0
  72. package/dist/ui/spinners.js +74 -0
  73. package/dist/ui/spinners.js.map +1 -0
  74. package/dist/ui/types.d.ts +35 -0
  75. package/dist/ui/types.d.ts.map +1 -0
  76. package/dist/ui/types.js +5 -0
  77. package/dist/ui/types.js.map +1 -0
  78. package/dist/utils/filesystem.d.ts +38 -0
  79. package/dist/utils/filesystem.d.ts.map +1 -0
  80. package/dist/utils/filesystem.js +181 -0
  81. package/dist/utils/filesystem.js.map +1 -0
  82. package/dist/utils/logger.d.ts +27 -0
  83. package/dist/utils/logger.d.ts.map +1 -0
  84. package/dist/utils/logger.js +52 -0
  85. package/dist/utils/logger.js.map +1 -0
  86. package/dist/utils/object.d.ts +140 -0
  87. package/dist/utils/object.d.ts.map +1 -0
  88. package/dist/utils/object.js +385 -0
  89. package/dist/utils/object.js.map +1 -0
  90. package/dist/utils/validation.d.ts +35 -0
  91. package/dist/utils/validation.d.ts.map +1 -0
  92. package/dist/utils/validation.js +270 -0
  93. package/dist/utils/validation.js.map +1 -0
  94. package/package.json +10 -21
  95. package/CHANGELOG.md +0 -70
  96. package/CONTRIBUTING.md +0 -132
  97. package/sc.png +0 -0
  98. package/src/__tests__/context.test.ts +0 -133
  99. package/src/__tests__/generator.test.ts +0 -107
  100. package/src/__tests__/validation.test.ts +0 -105
  101. package/src/cli/commands/create.ts +0 -252
  102. package/src/cli/commands/info.ts +0 -178
  103. package/src/cli/commands/init.ts +0 -186
  104. package/src/cli/commands/list.ts +0 -156
  105. package/src/cli/commands/new.ts +0 -316
  106. package/src/cli/index.ts +0 -116
  107. package/src/core/config.ts +0 -172
  108. package/src/core/context.ts +0 -212
  109. package/src/core/types.ts +0 -184
  110. package/src/templates/index.ts +0 -162
  111. package/src/types/gradient-string.d.ts +0 -25
  112. package/src/ui/colors.ts +0 -139
  113. package/src/ui/output.ts +0 -230
  114. package/src/ui/prompts.ts +0 -170
  115. package/src/ui/spinners.ts +0 -95
  116. package/src/ui/types.ts +0 -41
  117. package/src/utils/filesystem.ts +0 -222
  118. package/src/utils/logger.ts +0 -67
  119. package/src/utils/object.ts +0 -456
  120. package/src/utils/validation.ts +0 -345
  121. package/tsconfig.json +0 -25
@@ -0,0 +1,385 @@
1
+ /**
2
+ * Object and array utilities
3
+ */
4
+ // Object utilities
5
+ /**
6
+ * Deep merge objects
7
+ */
8
+ export function merge(target, ...sources) {
9
+ for (const source of sources) {
10
+ for (const key of Object.keys(source)) {
11
+ const targetValue = target[key];
12
+ const sourceValue = source[key];
13
+ if (sourceValue &&
14
+ typeof sourceValue === 'object' &&
15
+ !Array.isArray(sourceValue) &&
16
+ targetValue &&
17
+ typeof targetValue === 'object' &&
18
+ !Array.isArray(targetValue)) {
19
+ target[key] = merge(targetValue, sourceValue);
20
+ }
21
+ else {
22
+ target[key] = sourceValue;
23
+ }
24
+ }
25
+ }
26
+ return target;
27
+ }
28
+ /**
29
+ * Omit keys from object
30
+ */
31
+ export function omit(obj, keys) {
32
+ const result = { ...obj };
33
+ keys.forEach((key) => delete result[key]);
34
+ return result;
35
+ }
36
+ /**
37
+ * Pick keys from object
38
+ */
39
+ export function pick(obj, keys) {
40
+ const result = {};
41
+ keys.forEach((key) => {
42
+ result[key] = obj[key];
43
+ });
44
+ return result;
45
+ }
46
+ /**
47
+ * Invert object keys and values
48
+ */
49
+ export function invert(obj) {
50
+ const result = {};
51
+ for (const [key, value] of Object.entries(obj)) {
52
+ result[value.toString()] = key;
53
+ }
54
+ return result;
55
+ }
56
+ /**
57
+ * Map values of object
58
+ */
59
+ export function mapValues(obj, fn) {
60
+ const result = {};
61
+ for (const [key, value] of Object.entries(obj)) {
62
+ result[key] = fn(value, key);
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * Filter object keys
68
+ */
69
+ export function filterKeys(obj, fn) {
70
+ const result = {};
71
+ for (const [key, value] of Object.entries(obj)) {
72
+ if (fn(key)) {
73
+ result[key] = value;
74
+ }
75
+ }
76
+ return result;
77
+ }
78
+ // Array utilities
79
+ /**
80
+ * Group array items by key
81
+ */
82
+ export function groupBy(array, keyFn) {
83
+ return array.reduce((result, item) => {
84
+ const key = keyFn(item);
85
+ if (!result[key]) {
86
+ result[key] = [];
87
+ }
88
+ result[key].push(item);
89
+ return result;
90
+ }, {});
91
+ }
92
+ /**
93
+ * Get unique values
94
+ */
95
+ export function unique(array) {
96
+ return Array.from(new Set(array));
97
+ }
98
+ /**
99
+ * Get unique values by predicate
100
+ */
101
+ export function uniqueBy(array, predicate) {
102
+ const seen = new Set();
103
+ return array.filter((item) => {
104
+ const key = predicate(item);
105
+ if (seen.has(key)) {
106
+ return false;
107
+ }
108
+ seen.add(key);
109
+ return true;
110
+ });
111
+ }
112
+ /**
113
+ * Split array into chunks
114
+ */
115
+ export function chunk(array, size) {
116
+ const chunks = [];
117
+ for (let i = 0; i < array.length; i += size) {
118
+ chunks.push(array.slice(i, i + size));
119
+ }
120
+ return chunks;
121
+ }
122
+ /**
123
+ * Flatten array one level
124
+ */
125
+ export function flatten(array) {
126
+ const result = [];
127
+ for (const item of array) {
128
+ if (Array.isArray(item)) {
129
+ result.push(...item);
130
+ }
131
+ else {
132
+ result.push(item);
133
+ }
134
+ }
135
+ return result;
136
+ }
137
+ /**
138
+ * Deep flatten nested array
139
+ */
140
+ export function flattenDeep(array) {
141
+ return array.reduce((acc, item) => Array.isArray(item) ? acc.concat(flattenDeep(item)) : acc.concat(item), []);
142
+ }
143
+ /**
144
+ * Get difference between arrays
145
+ */
146
+ export function difference(a, b) {
147
+ const bSet = new Set(b);
148
+ return a.filter((item) => !bSet.has(item));
149
+ }
150
+ /**
151
+ * Get intersection of arrays
152
+ */
153
+ export function intersection(a, b) {
154
+ const bSet = new Set(b);
155
+ return a.filter((item) => bSet.has(item));
156
+ }
157
+ /**
158
+ * Get union of arrays
159
+ */
160
+ export function union(...arrays) {
161
+ return unique(arrays.flat());
162
+ }
163
+ /**
164
+ * Sort array by key
165
+ */
166
+ export function sortBy(array, keyFn) {
167
+ return [...array].sort((a, b) => {
168
+ const aKey = keyFn(a);
169
+ const bKey = keyFn(b);
170
+ if (aKey < bKey)
171
+ return -1;
172
+ if (aKey > bKey)
173
+ return 1;
174
+ return 0;
175
+ });
176
+ }
177
+ /**
178
+ * Partition array by predicate
179
+ */
180
+ export function partition(array, predicate) {
181
+ const truthy = [];
182
+ const falsy = [];
183
+ array.forEach((item) => {
184
+ if (predicate(item)) {
185
+ truthy.push(item);
186
+ }
187
+ else {
188
+ falsy.push(item);
189
+ }
190
+ });
191
+ return [truthy, falsy];
192
+ }
193
+ /**
194
+ * Remove falsy values from array
195
+ */
196
+ export function compact(array) {
197
+ return array.filter(Boolean);
198
+ }
199
+ /**
200
+ * Zip arrays together
201
+ */
202
+ export function zip(a, b) {
203
+ const length = Math.min(a.length, b.length);
204
+ const result = [];
205
+ for (let i = 0; i < length; i++) {
206
+ const aItem = a[i];
207
+ const bItem = b[i];
208
+ if (aItem !== undefined && bItem !== undefined) {
209
+ result.push([aItem, bItem]);
210
+ }
211
+ }
212
+ return result;
213
+ }
214
+ /**
215
+ * Unzip zipped arrays
216
+ */
217
+ export function unzip(zipped) {
218
+ const a = [];
219
+ const b = [];
220
+ zipped.forEach(([first, second]) => {
221
+ a.push(first);
222
+ b.push(second);
223
+ });
224
+ return [a, b];
225
+ }
226
+ /**
227
+ * Generate range of numbers
228
+ */
229
+ export function range(start, end, step = 1) {
230
+ if (end === undefined) {
231
+ end = start;
232
+ start = 0;
233
+ }
234
+ const result = [];
235
+ for (let i = start; i < end; i += step) {
236
+ result.push(i);
237
+ }
238
+ return result;
239
+ }
240
+ /**
241
+ * Generate array of repeated values
242
+ */
243
+ export function times(n, fn) {
244
+ return Array.from({ length: n }, (_, i) => fn(i));
245
+ }
246
+ // Math utilities
247
+ /**
248
+ * Clamp number between min and max
249
+ */
250
+ export function clamp(value, min, max) {
251
+ return Math.min(Math.max(value, min), max);
252
+ }
253
+ /**
254
+ * Generate random integer between min and max
255
+ */
256
+ export function randomInt(min, max) {
257
+ return Math.floor(Math.random() * (max - min + 1)) + min;
258
+ }
259
+ /**
260
+ * Get random element from array
261
+ */
262
+ export function randomElement(array) {
263
+ if (array.length === 0)
264
+ return undefined;
265
+ return array[Math.floor(Math.random() * array.length)];
266
+ }
267
+ /**
268
+ * Shuffle array in place
269
+ */
270
+ export function shuffle(array) {
271
+ const result = [...array];
272
+ for (let i = result.length - 1; i > 0; i--) {
273
+ const j = Math.floor(Math.random() * (i + 1));
274
+ const temp = result[i];
275
+ const swap = result[j];
276
+ if (temp !== undefined && swap !== undefined) {
277
+ result[i] = swap;
278
+ result[j] = temp;
279
+ }
280
+ }
281
+ return result;
282
+ }
283
+ // Async utilities
284
+ /**
285
+ * Sleep for specified milliseconds
286
+ */
287
+ export function sleep(ms) {
288
+ return new Promise((resolve) => setTimeout(resolve, ms));
289
+ }
290
+ /**
291
+ * Retry function on failure
292
+ */
293
+ export async function retry(fn, options = {}) {
294
+ const { retries = 3, delay = 1000, backoff = 2, onRetry } = options;
295
+ let lastError;
296
+ for (let attempt = 0; attempt <= retries; attempt++) {
297
+ try {
298
+ return await fn();
299
+ }
300
+ catch (error) {
301
+ lastError = error;
302
+ if (attempt < retries) {
303
+ if (onRetry) {
304
+ onRetry(lastError, attempt + 1);
305
+ }
306
+ await sleep(delay * Math.pow(backoff, attempt));
307
+ }
308
+ }
309
+ }
310
+ throw lastError;
311
+ }
312
+ // Function utilities
313
+ /**
314
+ * Memoize function results
315
+ */
316
+ export function memoize(fn) {
317
+ const cache = new Map();
318
+ const memoized = ((...args) => {
319
+ const key = JSON.stringify(args);
320
+ if (cache.has(key)) {
321
+ return cache.get(key);
322
+ }
323
+ const result = fn(...args);
324
+ cache.set(key, result);
325
+ return result;
326
+ });
327
+ memoized.clear = () => cache.clear();
328
+ return memoized;
329
+ }
330
+ // Deep utilities
331
+ /**
332
+ * Deep clone an object
333
+ */
334
+ export function deepClone(obj) {
335
+ if (obj === null || typeof obj !== 'object') {
336
+ return obj;
337
+ }
338
+ if (Array.isArray(obj)) {
339
+ return obj.map((item) => deepClone(item));
340
+ }
341
+ if (obj instanceof Date) {
342
+ return new Date(obj.getTime());
343
+ }
344
+ if (obj instanceof RegExp) {
345
+ return new RegExp(obj.source, obj.flags);
346
+ }
347
+ const cloned = {};
348
+ for (const key of Object.keys(obj)) {
349
+ cloned[key] = deepClone(obj[key]);
350
+ }
351
+ return cloned;
352
+ }
353
+ /**
354
+ * Deep equality check
355
+ */
356
+ export function deepEqual(a, b) {
357
+ if (a === b)
358
+ return true;
359
+ if (a === null || b === null)
360
+ return false;
361
+ if (typeof a !== 'object' || typeof b !== 'object')
362
+ return false;
363
+ if (Array.isArray(a) !== Array.isArray(b))
364
+ return false;
365
+ const aObj = a;
366
+ const bObj = b;
367
+ const aKeys = Object.keys(aObj);
368
+ const bKeys = Object.keys(bObj);
369
+ if (aKeys.length !== bKeys.length)
370
+ return false;
371
+ for (const key of aKeys) {
372
+ if (!bKeys.includes(key))
373
+ return false;
374
+ if (!deepEqual(aObj[key], bObj[key]))
375
+ return false;
376
+ }
377
+ return true;
378
+ }
379
+ /**
380
+ * Deep merge objects
381
+ */
382
+ export function deepMerge(target, ...sources) {
383
+ return merge(target, ...sources);
384
+ }
385
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/utils/object.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Validation utilities for app names, package names, and paths
3
+ */
4
+ export interface ValidationResult {
5
+ valid: boolean;
6
+ errors: string[];
7
+ warnings: string[];
8
+ }
9
+ export interface AppNameValidation extends ValidationResult {
10
+ normalized?: string;
11
+ }
12
+ export interface PackageNameValidation extends ValidationResult {
13
+ suggestions?: string[];
14
+ }
15
+ export interface DirectoryPathValidation extends ValidationResult {
16
+ normalized?: string;
17
+ }
18
+ export declare function validateAppName(name: string): AppNameValidation;
19
+ export declare function validatePackageNameInput(name: string): PackageNameValidation;
20
+ export declare function validatePackageStructure(name: string): ValidationResult;
21
+ export declare function validateDirectoryPath(path: string): DirectoryPathValidation;
22
+ export declare function validateEmail(email: string): ValidationResult;
23
+ export declare function validateUrl(url: string): ValidationResult;
24
+ export declare function validateVersion(version: string): ValidationResult;
25
+ export declare function validateAndroidMinSdk(sdk: number | string): ValidationResult;
26
+ export declare function validateAndroidTargetSdk(sdk: number | string): ValidationResult;
27
+ export declare function sanitizeFileName(name: string): string;
28
+ export declare function sanitizePackageName(name: string): string;
29
+ export declare function capitalizeFirstLetter(str: string): string;
30
+ export declare function camelCase(str: string): string;
31
+ export declare function pascalCase(str: string): string;
32
+ export declare function kebabCase(str: string): string;
33
+ export declare function snakeCase(str: string): string;
34
+ export declare function dotCase(str: string): string;
35
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CA4C/D;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CA8D5E;AAGD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAEvE;AAGD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,CAqC3E;AAGD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAgB7D;AAGD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAiBzD;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAiBjE;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAqB5E;AAGD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAqB/E;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrD;AAGD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOxD;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK3C"}