andrud 1.0.0 → 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.
Files changed (122) hide show
  1. package/README.md +69 -83
  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 +99 -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 +8 -19
  95. package/CHANGELOG.md +0 -70
  96. package/CODE_REVIEW_ANALYSIS.md +0 -177
  97. package/CONTRIBUTING.md +0 -132
  98. package/FIXES_IMPLEMENTED.md +0 -546
  99. package/src/__tests__/context.test.ts +0 -133
  100. package/src/__tests__/generator.test.ts +0 -107
  101. package/src/__tests__/validation.test.ts +0 -105
  102. package/src/cli/commands/create.ts +0 -252
  103. package/src/cli/commands/info.ts +0 -178
  104. package/src/cli/commands/init.ts +0 -186
  105. package/src/cli/commands/list.ts +0 -156
  106. package/src/cli/commands/new.ts +0 -316
  107. package/src/cli/index.ts +0 -116
  108. package/src/core/config.ts +0 -172
  109. package/src/core/context.ts +0 -212
  110. package/src/core/types.ts +0 -184
  111. package/src/templates/index.ts +0 -162
  112. package/src/types/gradient-string.d.ts +0 -25
  113. package/src/ui/colors.ts +0 -139
  114. package/src/ui/output.ts +0 -230
  115. package/src/ui/prompts.ts +0 -170
  116. package/src/ui/spinners.ts +0 -95
  117. package/src/ui/types.ts +0 -41
  118. package/src/utils/filesystem.ts +0 -222
  119. package/src/utils/logger.ts +0 -67
  120. package/src/utils/object.ts +0 -456
  121. package/src/utils/validation.ts +0 -345
  122. 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":"AAAA;;GAEG;AAEH,mBAAmB;AAEnB;;GAEG;AACH,MAAM,UAAU,KAAK,CAAmB,MAAS,EAAE,GAAG,OAAqB;IACzE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAmB,EAAE,CAAC;YACxD,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAChC,IACE,WAAW;gBACX,OAAO,WAAW,KAAK,QAAQ;gBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;gBAC3B,WAAW;gBACX,OAAO,WAAW,KAAK,QAAQ;gBAC/B,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAC3B,CAAC;gBACA,MAAkC,CAAC,GAAa,CAAC,GAAG,KAAK,CACxD,WAAqB,EACrB,WAAqB,CACtB,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACL,MAAkC,CAAC,GAAa,CAAC,GAAG,WAAsB,CAAC;YAC9E,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAsC,GAAM,EAAE,IAAS;IACzE,MAAM,MAAM,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,IAAI,CAAsC,GAAM,EAAE,IAAS;IACzE,MAAM,MAAM,GAAG,EAAgB,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAA4C,GAAM;IACtE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;IACjC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,GAAM,EACN,EAA0C;IAE1C,MAAM,MAAM,GAAG,EAAwB,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAc,CAAC,GAAG,EAAE,CAAC,KAAmB,EAAE,GAAc,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,GAAM,EACN,EAA6B;IAE7B,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,EAAE,CAAC,GAAc,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,GAAc,CAAC,GAAG,KAAmB,CAAC;QAC/C,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAkB;AAElB;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,KAAU,EACV,KAAqB;IAErB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAoB,CAAC,CAAC;AAC3B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAI,KAAU;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAU,EAAE,SAA+B;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAI,KAAU,EAAE,IAAY;IAC/C,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,KAAkB;IAC3C,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAI,KAAkB;IAC/C,OAAO,KAAK,CAAC,MAAM,CAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CACrC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAI,CAAM,EAAE,CAAM;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAI,CAAM,EAAE,CAAM;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAI,GAAG,MAAa;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAI,KAAU,EAAE,KAAuC;IAC3E,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAK,IAAe,GAAI,IAAe;YAAE,OAAO,CAAC,CAAC,CAAC;QACnD,IAAK,IAAe,GAAI,IAAe;YAAE,OAAO,CAAC,CAAC;QAClD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,KAAU,EAAE,SAA+B;IACtE,MAAM,MAAM,GAAQ,EAAE,CAAC;IACvB,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,KAAgD;IACzE,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAQ,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAO,CAAM,EAAE,CAAM;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAqB;IAC/C,MAAM,CAAC,GAAQ,EAAE,CAAC;IAClB,MAAM,CAAC,GAAQ,EAAE,CAAC;IAClB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE;QACjC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACd,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAY,EAAE,OAAe,CAAC;IACjE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,GAAG,GAAG,KAAK,CAAC;QACZ,KAAK,GAAG,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAI,CAAS,EAAE,EAAwB;IAC1D,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,iBAAiB;AAEjB;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,GAAW;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAI,KAAU;IACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAM,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAI,KAAU;IACnC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7C,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YACjB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,kBAAkB;AAElB;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AASD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,UAAwB,EAAE;IAE1B,MAAM,EACJ,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,IAAI,EACZ,OAAO,GAAG,CAAC,EACX,OAAO,EACR,GAAG,OAAO,CAAC;IAEZ,IAAI,SAAgB,CAAC;IAErB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAC;YAE3B,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;gBACtB,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,SAAS,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAU,CAAC;AACnB,CAAC;AAED,qBAAqB;AAErB;;GAEG;AACH,MAAM,UAAU,OAAO,CACrB,EAAK;IAEL,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC,CAA8B,CAAC;IAEhC,QAAQ,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iBAAiB;AAEjB;;GAEG;AACH,MAAM,UAAU,SAAS,CAAI,GAAM;IACjC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5C,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAiB,CAAC;IAC5D,CAAC;IAED,IAAI,GAAG,YAAY,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAiB,CAAC;IACjD,CAAC;IAED,IAAI,GAAG,YAAY,MAAM,EAAE,CAAC;QAC1B,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAiB,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,EAAO,CAAC;IACvB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAmB,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,CAAU,EAAE,CAAU;IAC9C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEjE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAExD,MAAM,IAAI,GAAG,CAA4B,CAAC;IAC1C,MAAM,IAAI,GAAG,CAA4B,CAAC;IAE1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAEhD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAmB,MAAS,EAAE,GAAG,OAAqB;IAC7E,OAAO,KAAK,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC;AACnC,CAAC"}
@@ -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"}