@nahisaho/musubix-core 1.0.0

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 (214) hide show
  1. package/bin/musubix.js +18 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +27 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/auth/auth-manager.d.ts +320 -0
  7. package/dist/auth/auth-manager.d.ts.map +1 -0
  8. package/dist/auth/auth-manager.js +580 -0
  9. package/dist/auth/auth-manager.js.map +1 -0
  10. package/dist/cli/base.d.ts +58 -0
  11. package/dist/cli/base.d.ts.map +1 -0
  12. package/dist/cli/base.js +93 -0
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/help.d.ts +17 -0
  15. package/dist/cli/commands/help.d.ts.map +1 -0
  16. package/dist/cli/commands/help.js +228 -0
  17. package/dist/cli/commands/help.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +14 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/index.js +25 -0
  21. package/dist/cli/commands/index.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +38 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +258 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/index.d.ts +9 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +9 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/codegen/coding-standards.d.ts +250 -0
  31. package/dist/codegen/coding-standards.d.ts.map +1 -0
  32. package/dist/codegen/coding-standards.js +976 -0
  33. package/dist/codegen/coding-standards.js.map +1 -0
  34. package/dist/codegen/coverage-reporter.d.ts +264 -0
  35. package/dist/codegen/coverage-reporter.d.ts.map +1 -0
  36. package/dist/codegen/coverage-reporter.js +697 -0
  37. package/dist/codegen/coverage-reporter.js.map +1 -0
  38. package/dist/codegen/dependency-analyzer.d.ts +271 -0
  39. package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
  40. package/dist/codegen/dependency-analyzer.js +661 -0
  41. package/dist/codegen/dependency-analyzer.js.map +1 -0
  42. package/dist/codegen/generator.d.ts +275 -0
  43. package/dist/codegen/generator.d.ts.map +1 -0
  44. package/dist/codegen/generator.js +781 -0
  45. package/dist/codegen/generator.js.map +1 -0
  46. package/dist/codegen/index.d.ts +18 -0
  47. package/dist/codegen/index.d.ts.map +1 -0
  48. package/dist/codegen/index.js +27 -0
  49. package/dist/codegen/index.js.map +1 -0
  50. package/dist/codegen/integration-test-generator.d.ts +312 -0
  51. package/dist/codegen/integration-test-generator.d.ts.map +1 -0
  52. package/dist/codegen/integration-test-generator.js +765 -0
  53. package/dist/codegen/integration-test-generator.js.map +1 -0
  54. package/dist/codegen/pattern-conformance.d.ts +309 -0
  55. package/dist/codegen/pattern-conformance.d.ts.map +1 -0
  56. package/dist/codegen/pattern-conformance.js +590 -0
  57. package/dist/codegen/pattern-conformance.js.map +1 -0
  58. package/dist/codegen/quality-metrics.d.ts +235 -0
  59. package/dist/codegen/quality-metrics.d.ts.map +1 -0
  60. package/dist/codegen/quality-metrics.js +439 -0
  61. package/dist/codegen/quality-metrics.js.map +1 -0
  62. package/dist/codegen/security-scanner.d.ts +179 -0
  63. package/dist/codegen/security-scanner.d.ts.map +1 -0
  64. package/dist/codegen/security-scanner.js +495 -0
  65. package/dist/codegen/security-scanner.js.map +1 -0
  66. package/dist/codegen/static-analyzer.d.ts +188 -0
  67. package/dist/codegen/static-analyzer.d.ts.map +1 -0
  68. package/dist/codegen/static-analyzer.js +490 -0
  69. package/dist/codegen/static-analyzer.js.map +1 -0
  70. package/dist/codegen/unit-test-generator.d.ts +289 -0
  71. package/dist/codegen/unit-test-generator.d.ts.map +1 -0
  72. package/dist/codegen/unit-test-generator.js +634 -0
  73. package/dist/codegen/unit-test-generator.js.map +1 -0
  74. package/dist/design/adr-generator.d.ts +227 -0
  75. package/dist/design/adr-generator.d.ts.map +1 -0
  76. package/dist/design/adr-generator.js +423 -0
  77. package/dist/design/adr-generator.js.map +1 -0
  78. package/dist/design/c4-generator.d.ts +267 -0
  79. package/dist/design/c4-generator.d.ts.map +1 -0
  80. package/dist/design/c4-generator.js +453 -0
  81. package/dist/design/c4-generator.js.map +1 -0
  82. package/dist/design/framework-optimizer.d.ts +190 -0
  83. package/dist/design/framework-optimizer.d.ts.map +1 -0
  84. package/dist/design/framework-optimizer.js +589 -0
  85. package/dist/design/framework-optimizer.js.map +1 -0
  86. package/dist/design/index.d.ts +12 -0
  87. package/dist/design/index.d.ts.map +1 -0
  88. package/dist/design/index.js +13 -0
  89. package/dist/design/index.js.map +1 -0
  90. package/dist/design/pattern-detector.d.ts +270 -0
  91. package/dist/design/pattern-detector.d.ts.map +1 -0
  92. package/dist/design/pattern-detector.js +621 -0
  93. package/dist/design/pattern-detector.js.map +1 -0
  94. package/dist/design/solid-validator.d.ts +188 -0
  95. package/dist/design/solid-validator.d.ts.map +1 -0
  96. package/dist/design/solid-validator.js +579 -0
  97. package/dist/design/solid-validator.js.map +1 -0
  98. package/dist/error/data-persistence.d.ts +311 -0
  99. package/dist/error/data-persistence.d.ts.map +1 -0
  100. package/dist/error/data-persistence.js +586 -0
  101. package/dist/error/data-persistence.js.map +1 -0
  102. package/dist/error/graceful-degradation.d.ts +309 -0
  103. package/dist/error/graceful-degradation.d.ts.map +1 -0
  104. package/dist/error/graceful-degradation.js +510 -0
  105. package/dist/error/graceful-degradation.js.map +1 -0
  106. package/dist/error/index.d.ts +11 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +19 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/explanation/explanation-generator.d.ts +228 -0
  111. package/dist/explanation/explanation-generator.d.ts.map +1 -0
  112. package/dist/explanation/explanation-generator.js +662 -0
  113. package/dist/explanation/explanation-generator.js.map +1 -0
  114. package/dist/explanation/index.d.ts +11 -0
  115. package/dist/explanation/index.d.ts.map +1 -0
  116. package/dist/explanation/index.js +19 -0
  117. package/dist/explanation/index.js.map +1 -0
  118. package/dist/explanation/reasoning-chain.d.ts +314 -0
  119. package/dist/explanation/reasoning-chain.d.ts.map +1 -0
  120. package/dist/explanation/reasoning-chain.js +414 -0
  121. package/dist/explanation/reasoning-chain.js.map +1 -0
  122. package/dist/explanation/visual-explanation.d.ts +315 -0
  123. package/dist/explanation/visual-explanation.d.ts.map +1 -0
  124. package/dist/explanation/visual-explanation.js +667 -0
  125. package/dist/explanation/visual-explanation.js.map +1 -0
  126. package/dist/index.d.ts +33 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +47 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/requirements/decomposer.d.ts +235 -0
  131. package/dist/requirements/decomposer.d.ts.map +1 -0
  132. package/dist/requirements/decomposer.js +587 -0
  133. package/dist/requirements/decomposer.js.map +1 -0
  134. package/dist/requirements/related-finder.d.ts +261 -0
  135. package/dist/requirements/related-finder.d.ts.map +1 -0
  136. package/dist/requirements/related-finder.js +629 -0
  137. package/dist/requirements/related-finder.js.map +1 -0
  138. package/dist/traceability/impact.d.ts +196 -0
  139. package/dist/traceability/impact.d.ts.map +1 -0
  140. package/dist/traceability/impact.js +438 -0
  141. package/dist/traceability/impact.js.map +1 -0
  142. package/dist/traceability/index.d.ts +9 -0
  143. package/dist/traceability/index.d.ts.map +1 -0
  144. package/dist/traceability/index.js +10 -0
  145. package/dist/traceability/index.js.map +1 -0
  146. package/dist/traceability/manager.d.ts +266 -0
  147. package/dist/traceability/manager.d.ts.map +1 -0
  148. package/dist/traceability/manager.js +412 -0
  149. package/dist/traceability/manager.js.map +1 -0
  150. package/dist/types/common.d.ts +294 -0
  151. package/dist/types/common.d.ts.map +1 -0
  152. package/dist/types/common.js +15 -0
  153. package/dist/types/common.js.map +1 -0
  154. package/dist/types/ears.d.ts +158 -0
  155. package/dist/types/ears.d.ts.map +1 -0
  156. package/dist/types/ears.js +33 -0
  157. package/dist/types/ears.js.map +1 -0
  158. package/dist/types/errors.d.ts +176 -0
  159. package/dist/types/errors.d.ts.map +1 -0
  160. package/dist/types/errors.js +55 -0
  161. package/dist/types/errors.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +10 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/utils/data-protector.d.ts +122 -0
  167. package/dist/utils/data-protector.d.ts.map +1 -0
  168. package/dist/utils/data-protector.js +275 -0
  169. package/dist/utils/data-protector.js.map +1 -0
  170. package/dist/utils/error-handler.d.ts +101 -0
  171. package/dist/utils/error-handler.d.ts.map +1 -0
  172. package/dist/utils/error-handler.js +324 -0
  173. package/dist/utils/error-handler.js.map +1 -0
  174. package/dist/utils/i18n-manager.d.ts +259 -0
  175. package/dist/utils/i18n-manager.d.ts.map +1 -0
  176. package/dist/utils/i18n-manager.js +554 -0
  177. package/dist/utils/i18n-manager.js.map +1 -0
  178. package/dist/utils/index.d.ts +10 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +10 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/dist/utils/logger.d.ts +120 -0
  183. package/dist/utils/logger.d.ts.map +1 -0
  184. package/dist/utils/logger.js +237 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/utils/performance-profiler.d.ts +251 -0
  187. package/dist/utils/performance-profiler.d.ts.map +1 -0
  188. package/dist/utils/performance-profiler.js +458 -0
  189. package/dist/utils/performance-profiler.js.map +1 -0
  190. package/dist/utils/scalability-optimizer.d.ts +294 -0
  191. package/dist/utils/scalability-optimizer.d.ts.map +1 -0
  192. package/dist/utils/scalability-optimizer.js +606 -0
  193. package/dist/utils/scalability-optimizer.js.map +1 -0
  194. package/dist/utils/structured-logger.d.ts +294 -0
  195. package/dist/utils/structured-logger.d.ts.map +1 -0
  196. package/dist/utils/structured-logger.js +630 -0
  197. package/dist/utils/structured-logger.js.map +1 -0
  198. package/dist/utils/version-compatibility.d.ts +217 -0
  199. package/dist/utils/version-compatibility.d.ts.map +1 -0
  200. package/dist/utils/version-compatibility.js +443 -0
  201. package/dist/utils/version-compatibility.js.map +1 -0
  202. package/dist/validators/ears-validator.d.ts +182 -0
  203. package/dist/validators/ears-validator.d.ts.map +1 -0
  204. package/dist/validators/ears-validator.js +357 -0
  205. package/dist/validators/ears-validator.js.map +1 -0
  206. package/dist/validators/index.d.ts +8 -0
  207. package/dist/validators/index.d.ts.map +1 -0
  208. package/dist/validators/index.js +9 -0
  209. package/dist/validators/index.js.map +1 -0
  210. package/dist/version.d.ts +8 -0
  211. package/dist/version.d.ts.map +1 -0
  212. package/dist/version.js +8 -0
  213. package/dist/version.js.map +1 -0
  214. package/package.json +100 -0
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Version Compatibility Checker
3
+ *
4
+ * Checks and manages version compatibility
5
+ *
6
+ * @packageDocumentation
7
+ * @module utils/version-compatibility
8
+ *
9
+ * @see REQ-ERR-003 - Version Compatibility
10
+ * @see Article IX - Continuous Adaptation
11
+ */
12
+ /**
13
+ * Version info
14
+ */
15
+ export interface VersionInfo {
16
+ /** Major version */
17
+ major: number;
18
+ /** Minor version */
19
+ minor: number;
20
+ /** Patch version */
21
+ patch: number;
22
+ /** Prerelease tag */
23
+ prerelease?: string;
24
+ /** Build metadata */
25
+ build?: string;
26
+ /** Raw version string */
27
+ raw: string;
28
+ }
29
+ /**
30
+ * Compatibility level
31
+ */
32
+ export type CompatibilityLevel = 'compatible' | 'minor-incompatible' | 'major-incompatible' | 'unknown';
33
+ /**
34
+ * Compatibility result
35
+ */
36
+ export interface CompatibilityResult {
37
+ /** Current version */
38
+ current: VersionInfo;
39
+ /** Required version */
40
+ required: VersionInfo;
41
+ /** Compatibility level */
42
+ level: CompatibilityLevel;
43
+ /** Is compatible */
44
+ compatible: boolean;
45
+ /** Message */
46
+ message: string;
47
+ /** Breaking changes */
48
+ breakingChanges?: string[];
49
+ /** Migration steps */
50
+ migrationSteps?: string[];
51
+ }
52
+ /**
53
+ * Dependency info
54
+ */
55
+ export interface DependencyInfo {
56
+ /** Package name */
57
+ name: string;
58
+ /** Current version */
59
+ currentVersion: string;
60
+ /** Required version range */
61
+ requiredVersion: string;
62
+ /** Latest version */
63
+ latestVersion?: string;
64
+ /** Is satisfied */
65
+ satisfied: boolean;
66
+ /** Is outdated */
67
+ outdated: boolean;
68
+ }
69
+ /**
70
+ * Compatibility report
71
+ */
72
+ export interface CompatibilityReport {
73
+ /** Timestamp */
74
+ timestamp: Date;
75
+ /** System version */
76
+ systemVersion: VersionInfo;
77
+ /** Dependencies checked */
78
+ dependencies: DependencyInfo[];
79
+ /** Overall compatible */
80
+ compatible: boolean;
81
+ /** Warnings */
82
+ warnings: string[];
83
+ /** Errors */
84
+ errors: string[];
85
+ /** Recommendations */
86
+ recommendations: string[];
87
+ }
88
+ /**
89
+ * Version constraint
90
+ */
91
+ export interface VersionConstraint {
92
+ /** Operator */
93
+ operator: '>=' | '>' | '<=' | '<' | '=' | '^' | '~';
94
+ /** Version */
95
+ version: VersionInfo;
96
+ }
97
+ /**
98
+ * Migration guide
99
+ */
100
+ export interface MigrationGuide {
101
+ /** From version */
102
+ fromVersion: string;
103
+ /** To version */
104
+ toVersion: string;
105
+ /** Steps */
106
+ steps: Array<{
107
+ description: string;
108
+ action: string;
109
+ automated: boolean;
110
+ }>;
111
+ /** Breaking changes */
112
+ breakingChanges: string[];
113
+ /** Deprecations */
114
+ deprecations: string[];
115
+ /** New features */
116
+ newFeatures: string[];
117
+ }
118
+ /**
119
+ * Compatibility config
120
+ */
121
+ export interface VersionCompatibilityConfig {
122
+ /** Strict mode */
123
+ strictMode: boolean;
124
+ /** Allow prerelease */
125
+ allowPrerelease: boolean;
126
+ /** Check dependencies */
127
+ checkDependencies: boolean;
128
+ /** Auto-migrate */
129
+ autoMigrate: boolean;
130
+ }
131
+ /**
132
+ * Default configuration
133
+ */
134
+ export declare const DEFAULT_COMPATIBILITY_CONFIG: VersionCompatibilityConfig;
135
+ /**
136
+ * Version Compatibility Checker
137
+ */
138
+ export declare class VersionCompatibility {
139
+ private config;
140
+ private migrationGuides;
141
+ constructor(config?: Partial<VersionCompatibilityConfig>);
142
+ /**
143
+ * Parse version string
144
+ */
145
+ parseVersion(version: string): VersionInfo | null;
146
+ /**
147
+ * Format version to string
148
+ */
149
+ formatVersion(info: VersionInfo): string;
150
+ /**
151
+ * Compare two versions
152
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
153
+ */
154
+ compareVersions(a: VersionInfo | string, b: VersionInfo | string): number;
155
+ /**
156
+ * Check version compatibility
157
+ */
158
+ checkCompatibility(current: string, required: string): CompatibilityResult;
159
+ /**
160
+ * Check version range (semver style)
161
+ */
162
+ satisfiesRange(version: string, range: string): boolean;
163
+ /**
164
+ * Parse version range
165
+ */
166
+ parseRange(range: string): VersionConstraint[];
167
+ /**
168
+ * Check if version satisfies constraint
169
+ */
170
+ private satisfiesConstraint;
171
+ /**
172
+ * Check dependency compatibility
173
+ */
174
+ checkDependency(name: string, currentVersion: string, requiredVersion: string, latestVersion?: string): DependencyInfo;
175
+ /**
176
+ * Generate compatibility report
177
+ */
178
+ generateReport(systemVersion: string, dependencies: Array<{
179
+ name: string;
180
+ current: string;
181
+ required: string;
182
+ latest?: string;
183
+ }>): CompatibilityReport;
184
+ /**
185
+ * Register migration guide
186
+ */
187
+ registerMigration(guide: MigrationGuide): void;
188
+ /**
189
+ * Get migration guide
190
+ */
191
+ getMigrationGuide(from: string, to: string): MigrationGuide | null;
192
+ /**
193
+ * Get breaking changes between versions
194
+ */
195
+ private getBreakingChanges;
196
+ /**
197
+ * Get migration steps between versions
198
+ */
199
+ private getMigrationSteps;
200
+ /**
201
+ * Get next version
202
+ */
203
+ getNextVersion(current: string, bump: 'major' | 'minor' | 'patch'): string;
204
+ /**
205
+ * Determine version bump type
206
+ */
207
+ determineBumpType(from: string, to: string): 'major' | 'minor' | 'patch' | null;
208
+ /**
209
+ * Format report as string
210
+ */
211
+ formatReport(report: CompatibilityReport): string;
212
+ }
213
+ /**
214
+ * Create version compatibility checker instance
215
+ */
216
+ export declare function createVersionCompatibility(config?: Partial<VersionCompatibilityConfig>): VersionCompatibility;
217
+ //# sourceMappingURL=version-compatibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-compatibility.d.ts","sourceRoot":"","sources":["../../src/utils/version-compatibility.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,443 @@
1
+ /**
2
+ * Version Compatibility Checker
3
+ *
4
+ * Checks and manages version compatibility
5
+ *
6
+ * @packageDocumentation
7
+ * @module utils/version-compatibility
8
+ *
9
+ * @see REQ-ERR-003 - Version Compatibility
10
+ * @see Article IX - Continuous Adaptation
11
+ */
12
+ /**
13
+ * Default configuration
14
+ */
15
+ export const DEFAULT_COMPATIBILITY_CONFIG = {
16
+ strictMode: false,
17
+ allowPrerelease: false,
18
+ checkDependencies: true,
19
+ autoMigrate: false,
20
+ };
21
+ /**
22
+ * Version pattern
23
+ */
24
+ const VERSION_PATTERN = /^v?(\d+)\.(\d+)\.(\d+)(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?$/;
25
+ /**
26
+ * Version Compatibility Checker
27
+ */
28
+ export class VersionCompatibility {
29
+ config;
30
+ migrationGuides = new Map();
31
+ constructor(config) {
32
+ this.config = { ...DEFAULT_COMPATIBILITY_CONFIG, ...config };
33
+ }
34
+ /**
35
+ * Parse version string
36
+ */
37
+ parseVersion(version) {
38
+ const match = version.trim().match(VERSION_PATTERN);
39
+ if (!match) {
40
+ return null;
41
+ }
42
+ return {
43
+ major: parseInt(match[1], 10),
44
+ minor: parseInt(match[2], 10),
45
+ patch: parseInt(match[3], 10),
46
+ prerelease: match[4],
47
+ build: match[5],
48
+ raw: version,
49
+ };
50
+ }
51
+ /**
52
+ * Format version to string
53
+ */
54
+ formatVersion(info) {
55
+ let version = `${info.major}.${info.minor}.${info.patch}`;
56
+ if (info.prerelease) {
57
+ version += `-${info.prerelease}`;
58
+ }
59
+ if (info.build) {
60
+ version += `+${info.build}`;
61
+ }
62
+ return version;
63
+ }
64
+ /**
65
+ * Compare two versions
66
+ * Returns: -1 if a < b, 0 if a == b, 1 if a > b
67
+ */
68
+ compareVersions(a, b) {
69
+ const versionA = typeof a === 'string' ? this.parseVersion(a) : a;
70
+ const versionB = typeof b === 'string' ? this.parseVersion(b) : b;
71
+ if (!versionA || !versionB) {
72
+ throw new Error('Invalid version format');
73
+ }
74
+ // Compare major
75
+ if (versionA.major !== versionB.major) {
76
+ return versionA.major > versionB.major ? 1 : -1;
77
+ }
78
+ // Compare minor
79
+ if (versionA.minor !== versionB.minor) {
80
+ return versionA.minor > versionB.minor ? 1 : -1;
81
+ }
82
+ // Compare patch
83
+ if (versionA.patch !== versionB.patch) {
84
+ return versionA.patch > versionB.patch ? 1 : -1;
85
+ }
86
+ // Compare prerelease
87
+ if (versionA.prerelease && versionB.prerelease) {
88
+ return versionA.prerelease.localeCompare(versionB.prerelease);
89
+ }
90
+ if (versionA.prerelease) {
91
+ return -1; // Prerelease is less than release
92
+ }
93
+ if (versionB.prerelease) {
94
+ return 1;
95
+ }
96
+ return 0;
97
+ }
98
+ /**
99
+ * Check version compatibility
100
+ */
101
+ checkCompatibility(current, required) {
102
+ const currentVersion = this.parseVersion(current);
103
+ const requiredVersion = this.parseVersion(required);
104
+ if (!currentVersion || !requiredVersion) {
105
+ return {
106
+ current: currentVersion ?? { major: 0, minor: 0, patch: 0, raw: current },
107
+ required: requiredVersion ?? { major: 0, minor: 0, patch: 0, raw: required },
108
+ level: 'unknown',
109
+ compatible: false,
110
+ message: 'Unable to parse version',
111
+ };
112
+ }
113
+ // Check prerelease
114
+ if (!this.config.allowPrerelease && currentVersion.prerelease) {
115
+ return {
116
+ current: currentVersion,
117
+ required: requiredVersion,
118
+ level: 'unknown',
119
+ compatible: false,
120
+ message: 'Prerelease versions are not allowed',
121
+ };
122
+ }
123
+ // Major version mismatch
124
+ if (currentVersion.major !== requiredVersion.major) {
125
+ const breaking = this.getBreakingChanges(requiredVersion, currentVersion);
126
+ const migration = this.getMigrationSteps(requiredVersion, currentVersion);
127
+ return {
128
+ current: currentVersion,
129
+ required: requiredVersion,
130
+ level: 'major-incompatible',
131
+ compatible: false,
132
+ message: `Major version mismatch: ${current} vs ${required}`,
133
+ breakingChanges: breaking,
134
+ migrationSteps: migration,
135
+ };
136
+ }
137
+ // Minor version mismatch (current < required)
138
+ if (currentVersion.minor < requiredVersion.minor) {
139
+ if (this.config.strictMode) {
140
+ return {
141
+ current: currentVersion,
142
+ required: requiredVersion,
143
+ level: 'minor-incompatible',
144
+ compatible: false,
145
+ message: `Minor version mismatch (strict mode): ${current} vs ${required}`,
146
+ };
147
+ }
148
+ return {
149
+ current: currentVersion,
150
+ required: requiredVersion,
151
+ level: 'minor-incompatible',
152
+ compatible: true,
153
+ message: `Minor version older than required: ${current} vs ${required}`,
154
+ };
155
+ }
156
+ // Patch version mismatch (current < required)
157
+ if (currentVersion.minor === requiredVersion.minor &&
158
+ currentVersion.patch < requiredVersion.patch) {
159
+ if (this.config.strictMode) {
160
+ return {
161
+ current: currentVersion,
162
+ required: requiredVersion,
163
+ level: 'compatible',
164
+ compatible: false,
165
+ message: `Patch version mismatch (strict mode): ${current} vs ${required}`,
166
+ };
167
+ }
168
+ }
169
+ return {
170
+ current: currentVersion,
171
+ required: requiredVersion,
172
+ level: 'compatible',
173
+ compatible: true,
174
+ message: `Version ${current} is compatible with ${required}`,
175
+ };
176
+ }
177
+ /**
178
+ * Check version range (semver style)
179
+ */
180
+ satisfiesRange(version, range) {
181
+ const v = this.parseVersion(version);
182
+ if (!v)
183
+ return false;
184
+ const constraints = this.parseRange(range);
185
+ for (const constraint of constraints) {
186
+ if (!this.satisfiesConstraint(v, constraint)) {
187
+ return false;
188
+ }
189
+ }
190
+ return true;
191
+ }
192
+ /**
193
+ * Parse version range
194
+ */
195
+ parseRange(range) {
196
+ const constraints = [];
197
+ // Handle ^ (caret) - compatible with version
198
+ if (range.startsWith('^')) {
199
+ const v = this.parseVersion(range.slice(1));
200
+ if (v) {
201
+ constraints.push({ operator: '>=', version: v });
202
+ constraints.push({
203
+ operator: '<',
204
+ version: { ...v, major: v.major + 1, minor: 0, patch: 0, raw: '' }
205
+ });
206
+ }
207
+ return constraints;
208
+ }
209
+ // Handle ~ (tilde) - approximately equivalent
210
+ if (range.startsWith('~')) {
211
+ const v = this.parseVersion(range.slice(1));
212
+ if (v) {
213
+ constraints.push({ operator: '>=', version: v });
214
+ constraints.push({
215
+ operator: '<',
216
+ version: { ...v, minor: v.minor + 1, patch: 0, raw: '' }
217
+ });
218
+ }
219
+ return constraints;
220
+ }
221
+ // Handle >= > <= < =
222
+ const parts = range.split(/\s+/);
223
+ for (const part of parts) {
224
+ let operator = '=';
225
+ let versionStr = part;
226
+ if (part.startsWith('>=')) {
227
+ operator = '>=';
228
+ versionStr = part.slice(2);
229
+ }
230
+ else if (part.startsWith('<=')) {
231
+ operator = '<=';
232
+ versionStr = part.slice(2);
233
+ }
234
+ else if (part.startsWith('>')) {
235
+ operator = '>';
236
+ versionStr = part.slice(1);
237
+ }
238
+ else if (part.startsWith('<')) {
239
+ operator = '<';
240
+ versionStr = part.slice(1);
241
+ }
242
+ else if (part.startsWith('=')) {
243
+ versionStr = part.slice(1);
244
+ }
245
+ const v = this.parseVersion(versionStr);
246
+ if (v) {
247
+ constraints.push({ operator, version: v });
248
+ }
249
+ }
250
+ return constraints;
251
+ }
252
+ /**
253
+ * Check if version satisfies constraint
254
+ */
255
+ satisfiesConstraint(version, constraint) {
256
+ const cmp = this.compareVersions(version, constraint.version);
257
+ switch (constraint.operator) {
258
+ case '>=': return cmp >= 0;
259
+ case '>': return cmp > 0;
260
+ case '<=': return cmp <= 0;
261
+ case '<': return cmp < 0;
262
+ case '=': return cmp === 0;
263
+ case '^': // Already expanded in parseRange
264
+ case '~':
265
+ return false;
266
+ default:
267
+ return false;
268
+ }
269
+ }
270
+ /**
271
+ * Check dependency compatibility
272
+ */
273
+ checkDependency(name, currentVersion, requiredVersion, latestVersion) {
274
+ const satisfied = this.satisfiesRange(currentVersion, requiredVersion);
275
+ const outdated = latestVersion ?
276
+ this.compareVersions(currentVersion, latestVersion) < 0 : false;
277
+ return {
278
+ name,
279
+ currentVersion,
280
+ requiredVersion,
281
+ latestVersion,
282
+ satisfied,
283
+ outdated,
284
+ };
285
+ }
286
+ /**
287
+ * Generate compatibility report
288
+ */
289
+ generateReport(systemVersion, dependencies) {
290
+ const sysVersion = this.parseVersion(systemVersion);
291
+ const depResults = [];
292
+ const warnings = [];
293
+ const errors = [];
294
+ const recommendations = [];
295
+ // Check each dependency
296
+ for (const dep of dependencies) {
297
+ const result = this.checkDependency(dep.name, dep.current, dep.required, dep.latest);
298
+ depResults.push(result);
299
+ if (!result.satisfied) {
300
+ errors.push(`${dep.name}: ${dep.current} does not satisfy ${dep.required}`);
301
+ }
302
+ else if (result.outdated) {
303
+ warnings.push(`${dep.name}: ${dep.current} is outdated (latest: ${dep.latest})`);
304
+ recommendations.push(`Update ${dep.name} to ${dep.latest}`);
305
+ }
306
+ }
307
+ const compatible = errors.length === 0;
308
+ if (!compatible) {
309
+ recommendations.push('Run dependency update to resolve incompatibilities');
310
+ }
311
+ return {
312
+ timestamp: new Date(),
313
+ systemVersion: sysVersion ?? { major: 0, minor: 0, patch: 0, raw: systemVersion },
314
+ dependencies: depResults,
315
+ compatible,
316
+ warnings,
317
+ errors,
318
+ recommendations,
319
+ };
320
+ }
321
+ /**
322
+ * Register migration guide
323
+ */
324
+ registerMigration(guide) {
325
+ const key = `${guide.fromVersion}->${guide.toVersion}`;
326
+ this.migrationGuides.set(key, guide);
327
+ }
328
+ /**
329
+ * Get migration guide
330
+ */
331
+ getMigrationGuide(from, to) {
332
+ const key = `${from}->${to}`;
333
+ return this.migrationGuides.get(key) ?? null;
334
+ }
335
+ /**
336
+ * Get breaking changes between versions
337
+ */
338
+ getBreakingChanges(from, to) {
339
+ const key = `${this.formatVersion(from)}->${this.formatVersion(to)}`;
340
+ const guide = this.migrationGuides.get(key);
341
+ return guide?.breakingChanges ?? [];
342
+ }
343
+ /**
344
+ * Get migration steps between versions
345
+ */
346
+ getMigrationSteps(from, to) {
347
+ const key = `${this.formatVersion(from)}->${this.formatVersion(to)}`;
348
+ const guide = this.migrationGuides.get(key);
349
+ return guide?.steps.map((s) => s.description) ?? [];
350
+ }
351
+ /**
352
+ * Get next version
353
+ */
354
+ getNextVersion(current, bump) {
355
+ const v = this.parseVersion(current);
356
+ if (!v) {
357
+ throw new Error(`Invalid version: ${current}`);
358
+ }
359
+ switch (bump) {
360
+ case 'major':
361
+ return `${v.major + 1}.0.0`;
362
+ case 'minor':
363
+ return `${v.major}.${v.minor + 1}.0`;
364
+ case 'patch':
365
+ return `${v.major}.${v.minor}.${v.patch + 1}`;
366
+ }
367
+ }
368
+ /**
369
+ * Determine version bump type
370
+ */
371
+ determineBumpType(from, to) {
372
+ const vFrom = this.parseVersion(from);
373
+ const vTo = this.parseVersion(to);
374
+ if (!vFrom || !vTo)
375
+ return null;
376
+ if (vTo.major > vFrom.major)
377
+ return 'major';
378
+ if (vTo.minor > vFrom.minor)
379
+ return 'minor';
380
+ if (vTo.patch > vFrom.patch)
381
+ return 'patch';
382
+ return null;
383
+ }
384
+ /**
385
+ * Format report as string
386
+ */
387
+ formatReport(report) {
388
+ const lines = [];
389
+ lines.push('# Version Compatibility Report');
390
+ lines.push('');
391
+ lines.push(`**Generated:** ${report.timestamp.toISOString()}`);
392
+ lines.push(`**System Version:** ${this.formatVersion(report.systemVersion)}`);
393
+ lines.push(`**Overall Status:** ${report.compatible ? '✅ Compatible' : '❌ Incompatible'}`);
394
+ lines.push('');
395
+ // Dependencies
396
+ lines.push('## Dependencies');
397
+ lines.push('');
398
+ lines.push('| Package | Current | Required | Status |');
399
+ lines.push('|---------|---------|----------|--------|');
400
+ for (const dep of report.dependencies) {
401
+ const status = dep.satisfied
402
+ ? (dep.outdated ? '⚠️ Outdated' : '✅ OK')
403
+ : '❌ Incompatible';
404
+ lines.push(`| ${dep.name} | ${dep.currentVersion} | ${dep.requiredVersion} | ${status} |`);
405
+ }
406
+ lines.push('');
407
+ // Errors
408
+ if (report.errors.length > 0) {
409
+ lines.push('## Errors');
410
+ lines.push('');
411
+ for (const error of report.errors) {
412
+ lines.push(`- ❌ ${error}`);
413
+ }
414
+ lines.push('');
415
+ }
416
+ // Warnings
417
+ if (report.warnings.length > 0) {
418
+ lines.push('## Warnings');
419
+ lines.push('');
420
+ for (const warning of report.warnings) {
421
+ lines.push(`- ⚠️ ${warning}`);
422
+ }
423
+ lines.push('');
424
+ }
425
+ // Recommendations
426
+ if (report.recommendations.length > 0) {
427
+ lines.push('## Recommendations');
428
+ lines.push('');
429
+ for (const rec of report.recommendations) {
430
+ lines.push(`- 💡 ${rec}`);
431
+ }
432
+ lines.push('');
433
+ }
434
+ return lines.join('\n');
435
+ }
436
+ }
437
+ /**
438
+ * Create version compatibility checker instance
439
+ */
440
+ export function createVersionCompatibility(config) {
441
+ return new VersionCompatibility(config);
442
+ }
443
+ //# sourceMappingURL=version-compatibility.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-compatibility.js","sourceRoot":"","sources":["../../src/utils/version-compatibility.ts"],"names":[],"mappings":"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"}