pcu 0.2.6

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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +478 -0
  3. package/bin/pcu.js +15 -0
  4. package/dist/application/services/CatalogUpdateService.d.ts +190 -0
  5. package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
  6. package/dist/application/services/CatalogUpdateService.js +521 -0
  7. package/dist/application/services/CatalogUpdateService.js.map +1 -0
  8. package/dist/application/services/WorkspaceService.d.ts +139 -0
  9. package/dist/application/services/WorkspaceService.d.ts.map +1 -0
  10. package/dist/application/services/WorkspaceService.js +340 -0
  11. package/dist/application/services/WorkspaceService.js.map +1 -0
  12. package/dist/cli/commands/CheckCommand.d.ts +41 -0
  13. package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
  14. package/dist/cli/commands/CheckCommand.js +168 -0
  15. package/dist/cli/commands/CheckCommand.js.map +1 -0
  16. package/dist/cli/commands/UpdateCommand.d.ts +69 -0
  17. package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
  18. package/dist/cli/commands/UpdateCommand.js +361 -0
  19. package/dist/cli/commands/UpdateCommand.js.map +1 -0
  20. package/dist/cli/formatters/OutputFormatter.d.ts +99 -0
  21. package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
  22. package/dist/cli/formatters/OutputFormatter.js +551 -0
  23. package/dist/cli/formatters/OutputFormatter.js.map +1 -0
  24. package/dist/cli/index.d.ts +12 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +271 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/cli/options/GlobalOptions.d.ts +117 -0
  29. package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
  30. package/dist/cli/options/GlobalOptions.js +278 -0
  31. package/dist/cli/options/GlobalOptions.js.map +1 -0
  32. package/dist/cli/options/index.d.ts +5 -0
  33. package/dist/cli/options/index.d.ts.map +1 -0
  34. package/dist/cli/options/index.js +5 -0
  35. package/dist/cli/options/index.js.map +1 -0
  36. package/dist/cli/validators/CommandValidator.d.ts +60 -0
  37. package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
  38. package/dist/cli/validators/CommandValidator.js +319 -0
  39. package/dist/cli/validators/CommandValidator.js.map +1 -0
  40. package/dist/cli/validators/index.d.ts +5 -0
  41. package/dist/cli/validators/index.d.ts.map +1 -0
  42. package/dist/cli/validators/index.js +5 -0
  43. package/dist/cli/validators/index.js.map +1 -0
  44. package/dist/common/config/Config.d.ts +142 -0
  45. package/dist/common/config/Config.d.ts.map +1 -0
  46. package/dist/common/config/Config.js +355 -0
  47. package/dist/common/config/Config.js.map +1 -0
  48. package/dist/common/config/index.d.ts +6 -0
  49. package/dist/common/config/index.d.ts.map +1 -0
  50. package/dist/common/config/index.js +6 -0
  51. package/dist/common/config/index.js.map +1 -0
  52. package/dist/common/logger/Logger.d.ts +110 -0
  53. package/dist/common/logger/Logger.d.ts.map +1 -0
  54. package/dist/common/logger/Logger.js +289 -0
  55. package/dist/common/logger/Logger.js.map +1 -0
  56. package/dist/common/logger/index.d.ts +6 -0
  57. package/dist/common/logger/index.d.ts.map +1 -0
  58. package/dist/common/logger/index.js +6 -0
  59. package/dist/common/logger/index.js.map +1 -0
  60. package/dist/common/types/cli.d.ts +265 -0
  61. package/dist/common/types/cli.d.ts.map +1 -0
  62. package/dist/common/types/cli.js +5 -0
  63. package/dist/common/types/cli.js.map +1 -0
  64. package/dist/common/types/core.d.ts +270 -0
  65. package/dist/common/types/core.d.ts.map +1 -0
  66. package/dist/common/types/core.js +32 -0
  67. package/dist/common/types/core.js.map +1 -0
  68. package/dist/common/types/index.d.ts +8 -0
  69. package/dist/common/types/index.d.ts.map +1 -0
  70. package/dist/common/types/index.js +8 -0
  71. package/dist/common/types/index.js.map +1 -0
  72. package/dist/common/utils/async.d.ts +74 -0
  73. package/dist/common/utils/async.d.ts.map +1 -0
  74. package/dist/common/utils/async.js +228 -0
  75. package/dist/common/utils/async.js.map +1 -0
  76. package/dist/common/utils/format.d.ts +32 -0
  77. package/dist/common/utils/format.d.ts.map +1 -0
  78. package/dist/common/utils/format.js +121 -0
  79. package/dist/common/utils/format.js.map +1 -0
  80. package/dist/common/utils/git.d.ts +44 -0
  81. package/dist/common/utils/git.d.ts.map +1 -0
  82. package/dist/common/utils/git.js +147 -0
  83. package/dist/common/utils/git.js.map +1 -0
  84. package/dist/common/utils/index.d.ts +11 -0
  85. package/dist/common/utils/index.d.ts.map +1 -0
  86. package/dist/common/utils/index.js +11 -0
  87. package/dist/common/utils/index.js.map +1 -0
  88. package/dist/common/utils/string.d.ts +56 -0
  89. package/dist/common/utils/string.d.ts.map +1 -0
  90. package/dist/common/utils/string.js +134 -0
  91. package/dist/common/utils/string.js.map +1 -0
  92. package/dist/common/utils/validation.d.ts +88 -0
  93. package/dist/common/utils/validation.d.ts.map +1 -0
  94. package/dist/common/utils/validation.js +281 -0
  95. package/dist/common/utils/validation.js.map +1 -0
  96. package/dist/domain/entities/Catalog.d.ts +117 -0
  97. package/dist/domain/entities/Catalog.d.ts.map +1 -0
  98. package/dist/domain/entities/Catalog.js +240 -0
  99. package/dist/domain/entities/Catalog.js.map +1 -0
  100. package/dist/domain/entities/Package.d.ts +143 -0
  101. package/dist/domain/entities/Package.d.ts.map +1 -0
  102. package/dist/domain/entities/Package.js +272 -0
  103. package/dist/domain/entities/Package.js.map +1 -0
  104. package/dist/domain/entities/Workspace.d.ts +95 -0
  105. package/dist/domain/entities/Workspace.d.ts.map +1 -0
  106. package/dist/domain/entities/Workspace.js +173 -0
  107. package/dist/domain/entities/Workspace.js.map +1 -0
  108. package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
  109. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
  110. package/dist/domain/repositories/WorkspaceRepository.js +8 -0
  111. package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
  112. package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
  113. package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
  114. package/dist/domain/value-objects/CatalogCollection.js +230 -0
  115. package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
  116. package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
  117. package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
  118. package/dist/domain/value-objects/PackageCollection.js +263 -0
  119. package/dist/domain/value-objects/PackageCollection.js.map +1 -0
  120. package/dist/domain/value-objects/Version.d.ts +141 -0
  121. package/dist/domain/value-objects/Version.d.ts.map +1 -0
  122. package/dist/domain/value-objects/Version.js +268 -0
  123. package/dist/domain/value-objects/Version.js.map +1 -0
  124. package/dist/domain/value-objects/WorkspaceConfig.d.ts +144 -0
  125. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
  126. package/dist/domain/value-objects/WorkspaceConfig.js +357 -0
  127. package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
  128. package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
  129. package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
  130. package/dist/domain/value-objects/WorkspaceId.js +104 -0
  131. package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
  132. package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
  133. package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
  134. package/dist/domain/value-objects/WorkspacePath.js +128 -0
  135. package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
  136. package/dist/infrastructure/cache/Cache.d.ts +161 -0
  137. package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
  138. package/dist/infrastructure/cache/Cache.js +398 -0
  139. package/dist/infrastructure/cache/Cache.js.map +1 -0
  140. package/dist/infrastructure/cache/index.d.ts +6 -0
  141. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  142. package/dist/infrastructure/cache/index.js +6 -0
  143. package/dist/infrastructure/cache/index.js.map +1 -0
  144. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
  145. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
  146. package/dist/infrastructure/external-services/NpmRegistryService.js +305 -0
  147. package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
  148. package/dist/infrastructure/file-system/FileSystemService.d.ts +120 -0
  149. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
  150. package/dist/infrastructure/file-system/FileSystemService.js +663 -0
  151. package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
  152. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
  153. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
  154. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
  155. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
  156. package/package.json +127 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/common/utils/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAUvE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM,CAEzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAU,GAAG,MAAM,CAI3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAcnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,MAAM,CAiER"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Format Utilities
3
+ */
4
+ /**
5
+ * Format bytes to human readable string
6
+ */
7
+ export function formatBytes(bytes, decimals = 2) {
8
+ if (bytes === 0)
9
+ return '0 Bytes';
10
+ const k = 1024;
11
+ const dm = decimals < 0 ? 0 : decimals;
12
+ const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
13
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
14
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
15
+ }
16
+ /**
17
+ * Format duration in milliseconds to human readable string
18
+ */
19
+ export function formatDuration(ms) {
20
+ if (ms < 1000)
21
+ return `${ms}ms`;
22
+ if (ms < 60000)
23
+ return `${(ms / 1000).toFixed(1)}s`;
24
+ if (ms < 3600000)
25
+ return `${(ms / 60000).toFixed(1)}m`;
26
+ return `${(ms / 3600000).toFixed(1)}h`;
27
+ }
28
+ /**
29
+ * Format number with thousands separator
30
+ */
31
+ export function formatNumber(num, separator = ',') {
32
+ return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, separator);
33
+ }
34
+ /**
35
+ * Format percentage
36
+ */
37
+ export function formatPercentage(value, total, decimals = 1) {
38
+ if (total === 0)
39
+ return '0%';
40
+ const percentage = (value / total) * 100;
41
+ return `${percentage.toFixed(decimals)}%`;
42
+ }
43
+ /**
44
+ * Format timestamp to relative time
45
+ */
46
+ export function formatRelativeTime(timestamp) {
47
+ const now = Date.now();
48
+ const time = typeof timestamp === 'number' ? timestamp : timestamp.getTime();
49
+ const diff = now - time;
50
+ const seconds = Math.floor(diff / 1000);
51
+ const minutes = Math.floor(seconds / 60);
52
+ const hours = Math.floor(minutes / 60);
53
+ const days = Math.floor(hours / 24);
54
+ if (days > 0)
55
+ return `${days} day${days === 1 ? '' : 's'} ago`;
56
+ if (hours > 0)
57
+ return `${hours} hour${hours === 1 ? '' : 's'} ago`;
58
+ if (minutes > 0)
59
+ return `${minutes} minute${minutes === 1 ? '' : 's'} ago`;
60
+ return `${seconds} second${seconds === 1 ? '' : 's'} ago`;
61
+ }
62
+ /**
63
+ * Format table data
64
+ */
65
+ export function formatTable(headers, rows, options = {}) {
66
+ const { padding = 1, align = [], borders = true } = options;
67
+ if (rows.length === 0)
68
+ return '';
69
+ // Calculate column widths
70
+ const widths = headers.map((header, i) => {
71
+ const columnValues = [header, ...rows.map((row) => row[i] || '')];
72
+ return Math.max(...columnValues.map((val) => val.length));
73
+ });
74
+ // Format row function
75
+ const formatRow = (cells, _isHeader = false) => {
76
+ const formattedCells = cells.map((cell, i) => {
77
+ const width = widths[i] || 0;
78
+ const alignment = align[i] || 'left';
79
+ let formatted = cell;
80
+ if (alignment === 'center') {
81
+ const totalPad = width - cell.length;
82
+ const leftPad = Math.floor(totalPad / 2);
83
+ const rightPad = totalPad - leftPad;
84
+ formatted = ' '.repeat(leftPad) + cell + ' '.repeat(rightPad);
85
+ }
86
+ else if (alignment === 'right') {
87
+ formatted = cell.padStart(width);
88
+ }
89
+ else {
90
+ formatted = cell.padEnd(width);
91
+ }
92
+ return ' '.repeat(padding) + formatted + ' '.repeat(padding);
93
+ });
94
+ return borders ? `|${formattedCells.join('|')}|` : formattedCells.join(' ');
95
+ };
96
+ // Build table
97
+ const lines = [];
98
+ if (borders) {
99
+ // Top border
100
+ const topBorder = widths.map((w) => '-'.repeat(w + padding * 2)).join('+');
101
+ lines.push(`+${topBorder}+`);
102
+ }
103
+ // Header
104
+ lines.push(formatRow(headers, true));
105
+ if (borders) {
106
+ // Header separator
107
+ const headerSep = widths.map((w) => '-'.repeat(w + padding * 2)).join('+');
108
+ lines.push(`+${headerSep}+`);
109
+ }
110
+ // Rows
111
+ rows.forEach((row) => {
112
+ lines.push(formatRow(row));
113
+ });
114
+ if (borders) {
115
+ // Bottom border
116
+ const bottomBorder = widths.map((w) => '-'.repeat(w + padding * 2)).join('+');
117
+ lines.push(`+${bottomBorder}+`);
118
+ }
119
+ return lines.join('\n');
120
+ }
121
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/common/utils/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Git Utilities
3
+ */
4
+ /**
5
+ * Check if directory is a git repository
6
+ */
7
+ export declare function isGitRepository(path?: string): boolean;
8
+ /**
9
+ * Get current git branch
10
+ */
11
+ export declare function getCurrentBranch(cwd?: string): string | null;
12
+ /**
13
+ * Check if working directory is clean
14
+ */
15
+ export declare function isWorkingDirectoryClean(cwd?: string): boolean;
16
+ /**
17
+ * Get last commit hash
18
+ */
19
+ export declare function getLastCommitHash(cwd?: string): string | null;
20
+ /**
21
+ * Get git repository URL
22
+ */
23
+ export declare function getRepositoryUrl(cwd?: string): string | null;
24
+ /**
25
+ * Create git tag
26
+ */
27
+ export declare function createTag(tag: string, message?: string, cwd?: string): boolean;
28
+ /**
29
+ * Check if there are uncommitted changes
30
+ */
31
+ export declare function hasUncommittedChanges(cwd?: string): boolean;
32
+ /**
33
+ * Get list of modified files
34
+ */
35
+ export declare function getModifiedFiles(cwd?: string): string[];
36
+ /**
37
+ * Stage files for commit
38
+ */
39
+ export declare function stageFiles(files: string[], cwd?: string): boolean;
40
+ /**
41
+ * Commit changes
42
+ */
43
+ export declare function commit(message: string, cwd?: string): boolean;
44
+ //# sourceMappingURL=git.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/common/utils/git.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAsB,GAAG,OAAO,CAMrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAW3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAW5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAW5E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,IAAI,CAW3E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAS7F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAsB,GAAG,OAAO,CAE1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,EAAE,CAiBtE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAQhF;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAO5E"}
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Git Utilities
3
+ */
4
+ import { execSync } from 'child_process';
5
+ import { existsSync } from 'fs';
6
+ import { join } from 'path';
7
+ /**
8
+ * Check if directory is a git repository
9
+ */
10
+ export function isGitRepository(path = process.cwd()) {
11
+ try {
12
+ return existsSync(join(path, '.git'));
13
+ }
14
+ catch {
15
+ return false;
16
+ }
17
+ }
18
+ /**
19
+ * Get current git branch
20
+ */
21
+ export function getCurrentBranch(cwd = process.cwd()) {
22
+ try {
23
+ const branch = execSync('git branch --show-current', {
24
+ cwd,
25
+ encoding: 'utf8',
26
+ stdio: 'pipe',
27
+ }).trim();
28
+ return branch || null;
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Check if working directory is clean
36
+ */
37
+ export function isWorkingDirectoryClean(cwd = process.cwd()) {
38
+ try {
39
+ const status = execSync('git status --porcelain', {
40
+ cwd,
41
+ encoding: 'utf8',
42
+ stdio: 'pipe',
43
+ }).trim();
44
+ return status === '';
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ /**
51
+ * Get last commit hash
52
+ */
53
+ export function getLastCommitHash(cwd = process.cwd()) {
54
+ try {
55
+ const hash = execSync('git rev-parse HEAD', {
56
+ cwd,
57
+ encoding: 'utf8',
58
+ stdio: 'pipe',
59
+ }).trim();
60
+ return hash || null;
61
+ }
62
+ catch {
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Get git repository URL
68
+ */
69
+ export function getRepositoryUrl(cwd = process.cwd()) {
70
+ try {
71
+ const url = execSync('git config --get remote.origin.url', {
72
+ cwd,
73
+ encoding: 'utf8',
74
+ stdio: 'pipe',
75
+ }).trim();
76
+ return url || null;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ /**
83
+ * Create git tag
84
+ */
85
+ export function createTag(tag, message, cwd = process.cwd()) {
86
+ try {
87
+ const cmd = message ? `git tag -a "${tag}" -m "${message}"` : `git tag "${tag}"`;
88
+ execSync(cmd, { cwd, stdio: 'pipe' });
89
+ return true;
90
+ }
91
+ catch {
92
+ return false;
93
+ }
94
+ }
95
+ /**
96
+ * Check if there are uncommitted changes
97
+ */
98
+ export function hasUncommittedChanges(cwd = process.cwd()) {
99
+ return !isWorkingDirectoryClean(cwd);
100
+ }
101
+ /**
102
+ * Get list of modified files
103
+ */
104
+ export function getModifiedFiles(cwd = process.cwd()) {
105
+ try {
106
+ const output = execSync('git status --porcelain', {
107
+ cwd,
108
+ encoding: 'utf8',
109
+ stdio: 'pipe',
110
+ }).trim();
111
+ if (!output)
112
+ return [];
113
+ return output
114
+ .split('\n')
115
+ .map((line) => line.substring(3)) // Remove status indicators
116
+ .filter(Boolean);
117
+ }
118
+ catch {
119
+ return [];
120
+ }
121
+ }
122
+ /**
123
+ * Stage files for commit
124
+ */
125
+ export function stageFiles(files, cwd = process.cwd()) {
126
+ try {
127
+ const fileList = files.map((f) => `"${f}"`).join(' ');
128
+ execSync(`git add ${fileList}`, { cwd, stdio: 'pipe' });
129
+ return true;
130
+ }
131
+ catch {
132
+ return false;
133
+ }
134
+ }
135
+ /**
136
+ * Commit changes
137
+ */
138
+ export function commit(message, cwd = process.cwd()) {
139
+ try {
140
+ execSync(`git commit -m "${message}"`, { cwd, stdio: 'pipe' });
141
+ return true;
142
+ }
143
+ catch {
144
+ return false;
145
+ }
146
+ }
147
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/common/utils/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Common Utilities
3
+ *
4
+ * Collection of utility functions used throughout the application.
5
+ */
6
+ export * from './string.js';
7
+ export * from './async.js';
8
+ export * from './validation.js';
9
+ export * from './format.js';
10
+ export * from './git.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/common/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Common Utilities
3
+ *
4
+ * Collection of utility functions used throughout the application.
5
+ */
6
+ export * from './string.js';
7
+ export * from './async.js';
8
+ export * from './validation.js';
9
+ export * from './format.js';
10
+ export * from './git.js';
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * String Utilities
3
+ */
4
+ /**
5
+ * Convert camelCase to kebab-case
6
+ */
7
+ export declare function camelToKebab(str: string): string;
8
+ /**
9
+ * Convert kebab-case to camelCase
10
+ */
11
+ export declare function kebabToCamel(str: string): string;
12
+ /**
13
+ * Capitalize first letter
14
+ */
15
+ export declare function capitalize(str: string): string;
16
+ /**
17
+ * Truncate string with ellipsis
18
+ */
19
+ export declare function truncate(str: string, maxLength: number, ellipsis?: string): string;
20
+ /**
21
+ * Pad string to specified length
22
+ */
23
+ export declare function pad(str: string, length: number, char?: string, direction?: 'left' | 'right' | 'both'): string;
24
+ /**
25
+ * Remove ANSI color codes from string
26
+ */
27
+ export declare function stripAnsi(str: string): string;
28
+ /**
29
+ * Pluralize word based on count
30
+ */
31
+ export declare function pluralize(word: string, count: number, suffix?: string): string;
32
+ /**
33
+ * Generate random string
34
+ */
35
+ export declare function randomString(length: number, chars?: string): string;
36
+ /**
37
+ * Escape string for use in regex
38
+ */
39
+ export declare function escapeRegex(str: string): string;
40
+ /**
41
+ * Convert string to slug (URL-friendly)
42
+ */
43
+ export declare function slugify(str: string): string;
44
+ /**
45
+ * Parse boolean from string (handles various formats)
46
+ */
47
+ export declare function parseBoolean(value: string | boolean): boolean;
48
+ /**
49
+ * Format template string with variables
50
+ */
51
+ export declare function template(str: string, variables: Record<string, any>): string;
52
+ /**
53
+ * Calculate string similarity (Levenshtein distance)
54
+ */
55
+ export declare function similarity(a: string, b: string): number;
56
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","sourceRoot":"","sources":["../../../src/common/utils/string.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAc,GAAG,MAAM,CAKzF;AAED;;GAEG;AACH,wBAAgB,GAAG,CACjB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,MAAY,EAClB,SAAS,GAAE,MAAM,GAAG,OAAO,GAAG,MAAgB,GAC7C,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM,CAEnF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAyE,GAC/E,MAAM,CAMR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAO7D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAI5E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BvD"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * String Utilities
3
+ */
4
+ /**
5
+ * Convert camelCase to kebab-case
6
+ */
7
+ export function camelToKebab(str) {
8
+ return str.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();
9
+ }
10
+ /**
11
+ * Convert kebab-case to camelCase
12
+ */
13
+ export function kebabToCamel(str) {
14
+ return str.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
15
+ }
16
+ /**
17
+ * Capitalize first letter
18
+ */
19
+ export function capitalize(str) {
20
+ return str.charAt(0).toUpperCase() + str.slice(1);
21
+ }
22
+ /**
23
+ * Truncate string with ellipsis
24
+ */
25
+ export function truncate(str, maxLength, ellipsis = '...') {
26
+ if (str.length <= maxLength) {
27
+ return str;
28
+ }
29
+ return str.slice(0, maxLength - ellipsis.length) + ellipsis;
30
+ }
31
+ /**
32
+ * Pad string to specified length
33
+ */
34
+ export function pad(str, length, char = ' ', direction = 'right') {
35
+ const padding = Math.max(0, length - str.length);
36
+ switch (direction) {
37
+ case 'left':
38
+ return char.repeat(padding) + str;
39
+ case 'both':
40
+ const leftPad = Math.floor(padding / 2);
41
+ const rightPad = padding - leftPad;
42
+ return char.repeat(leftPad) + str + char.repeat(rightPad);
43
+ case 'right':
44
+ default:
45
+ return str + char.repeat(padding);
46
+ }
47
+ }
48
+ /**
49
+ * Remove ANSI color codes from string
50
+ */
51
+ export function stripAnsi(str) {
52
+ const escapeChar = String.fromCharCode(27);
53
+ const ansiPattern = new RegExp(`${escapeChar}\\[[0-9;]*m`, 'g');
54
+ return str.replace(ansiPattern, '');
55
+ }
56
+ /**
57
+ * Pluralize word based on count
58
+ */
59
+ export function pluralize(word, count, suffix = 's') {
60
+ return count === 1 ? word : word + suffix;
61
+ }
62
+ /**
63
+ * Generate random string
64
+ */
65
+ export function randomString(length, chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') {
66
+ let result = '';
67
+ for (let i = 0; i < length; i++) {
68
+ result += chars.charAt(Math.floor(Math.random() * chars.length));
69
+ }
70
+ return result;
71
+ }
72
+ /**
73
+ * Escape string for use in regex
74
+ */
75
+ export function escapeRegex(str) {
76
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
77
+ }
78
+ /**
79
+ * Convert string to slug (URL-friendly)
80
+ */
81
+ export function slugify(str) {
82
+ return str
83
+ .toLowerCase()
84
+ .trim()
85
+ .replace(/[^\w\s-]/g, '') // Remove non-word chars
86
+ .replace(/[\s_-]+/g, '-') // Replace spaces and underscores with hyphens
87
+ .replace(/^-+|-+$/g, ''); // Remove leading/trailing hyphens
88
+ }
89
+ /**
90
+ * Parse boolean from string (handles various formats)
91
+ */
92
+ export function parseBoolean(value) {
93
+ if (typeof value === 'boolean') {
94
+ return value;
95
+ }
96
+ const normalized = value.toLowerCase().trim();
97
+ return normalized === 'true' || normalized === '1' || normalized === 'yes' || normalized === 'on';
98
+ }
99
+ /**
100
+ * Format template string with variables
101
+ */
102
+ export function template(str, variables) {
103
+ return str.replace(/\{\{(\w+)\}\}/g, (match, key) => {
104
+ return variables[key] !== undefined ? String(variables[key]) : match;
105
+ });
106
+ }
107
+ /**
108
+ * Calculate string similarity (Levenshtein distance)
109
+ */
110
+ export function similarity(a, b) {
111
+ const matrix = [];
112
+ for (let i = 0; i <= b.length; i++) {
113
+ matrix[i] = [i];
114
+ }
115
+ for (let j = 0; j <= a.length; j++) {
116
+ matrix[0][j] = j;
117
+ }
118
+ for (let i = 1; i <= b.length; i++) {
119
+ for (let j = 1; j <= a.length; j++) {
120
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
121
+ matrix[i][j] = matrix[i - 1][j - 1];
122
+ }
123
+ else {
124
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, // substitution
125
+ matrix[i][j - 1] + 1, // insertion
126
+ matrix[i - 1][j] + 1 // deletion
127
+ );
128
+ }
129
+ }
130
+ }
131
+ const maxLength = Math.max(a.length, b.length);
132
+ return maxLength === 0 ? 1 : (maxLength - matrix[b.length][a.length]) / maxLength;
133
+ }
134
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sourceRoot":"","sources":["../../../src/common/utils/string.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Validation Utilities
3
+ */
4
+ /**
5
+ * Validation result interface
6
+ */
7
+ export interface ValidationResult {
8
+ isValid: boolean;
9
+ errors: string[];
10
+ warnings: string[];
11
+ }
12
+ /**
13
+ * Create validation result
14
+ */
15
+ export declare function createValidationResult(isValid?: boolean, errors?: string[], warnings?: string[]): ValidationResult;
16
+ /**
17
+ * Validate email address
18
+ */
19
+ export declare function isValidEmail(email: string): boolean;
20
+ /**
21
+ * Validate URL
22
+ */
23
+ export declare function isValidUrl(url: string): boolean;
24
+ /**
25
+ * Validate semver version
26
+ */
27
+ export declare function isValidSemver(version: string): boolean;
28
+ /**
29
+ * Validate package name
30
+ */
31
+ export declare function isValidPackageName(name: string): boolean;
32
+ /**
33
+ * Validate file path
34
+ */
35
+ export declare function isValidPath(path: string): boolean;
36
+ /**
37
+ * Validate JSON string
38
+ */
39
+ export declare function isValidJson(jsonString: string): boolean;
40
+ /**
41
+ * Validate YAML string
42
+ */
43
+ export declare function isValidYaml(yamlString: string): boolean;
44
+ /**
45
+ * Validate glob pattern
46
+ */
47
+ export declare function isValidGlob(pattern: string): boolean;
48
+ /**
49
+ * Validate port number
50
+ */
51
+ export declare function isValidPort(port: number | string): boolean;
52
+ /**
53
+ * Validate timeout value
54
+ */
55
+ export declare function isValidTimeout(timeout: number): boolean;
56
+ /**
57
+ * Validate log level
58
+ */
59
+ export declare function isValidLogLevel(level: string): boolean;
60
+ /**
61
+ * Validate update target
62
+ */
63
+ export declare function isValidUpdateTarget(target: string): boolean;
64
+ /**
65
+ * Validate output format
66
+ */
67
+ export declare function isValidOutputFormat(format: string): boolean;
68
+ /**
69
+ * Validate CLI command options
70
+ */
71
+ export declare function validateCliOptions(options: Record<string, any>): ValidationResult;
72
+ /**
73
+ * Validate configuration object
74
+ */
75
+ export declare function validateConfig(config: Record<string, any>): ValidationResult;
76
+ /**
77
+ * Sanitize string input
78
+ */
79
+ export declare function sanitizeString(input: string, options?: {
80
+ maxLength?: number;
81
+ allowedChars?: RegExp;
82
+ stripHtml?: boolean;
83
+ }): string;
84
+ /**
85
+ * Validate and sanitize package name
86
+ */
87
+ export declare function sanitizePackageName(name: string): string;
88
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../src/common/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,OAAc,EACvB,MAAM,GAAE,MAAM,EAAO,EACrB,QAAQ,GAAE,MAAM,EAAO,GACtB,gBAAgB,CAElB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAItD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGjD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CA8BvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CA8BpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAG1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CA0DjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,gBAAgB,CA6C5E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,MAAM,CAmBR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKxD"}