@enactprotocol/shared 1.2.13 → 2.0.1

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 (207) hide show
  1. package/README.md +44 -0
  2. package/dist/config.d.ts +164 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +386 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/constants.d.ts +15 -5
  7. package/dist/constants.d.ts.map +1 -0
  8. package/dist/constants.js +24 -8
  9. package/dist/constants.js.map +1 -0
  10. package/dist/execution/command.d.ts +102 -0
  11. package/dist/execution/command.d.ts.map +1 -0
  12. package/dist/execution/command.js +262 -0
  13. package/dist/execution/command.js.map +1 -0
  14. package/dist/execution/index.d.ts +12 -0
  15. package/dist/execution/index.d.ts.map +1 -0
  16. package/dist/execution/index.js +17 -0
  17. package/dist/execution/index.js.map +1 -0
  18. package/dist/execution/runtime.d.ts +82 -0
  19. package/dist/execution/runtime.d.ts.map +1 -0
  20. package/dist/execution/runtime.js +273 -0
  21. package/dist/execution/runtime.js.map +1 -0
  22. package/dist/execution/types.d.ts +306 -0
  23. package/dist/execution/types.d.ts.map +1 -0
  24. package/dist/execution/types.js +14 -0
  25. package/dist/execution/types.js.map +1 -0
  26. package/dist/execution/validation.d.ts +43 -0
  27. package/dist/execution/validation.d.ts.map +1 -0
  28. package/dist/execution/validation.js +430 -0
  29. package/dist/execution/validation.js.map +1 -0
  30. package/dist/index.d.ts +21 -21
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +49 -25
  33. package/dist/index.js.map +1 -0
  34. package/dist/manifest/index.d.ts +7 -0
  35. package/dist/manifest/index.d.ts.map +1 -0
  36. package/dist/manifest/index.js +10 -0
  37. package/dist/manifest/index.js.map +1 -0
  38. package/dist/manifest/loader.d.ts +76 -0
  39. package/dist/manifest/loader.d.ts.map +1 -0
  40. package/dist/manifest/loader.js +146 -0
  41. package/dist/manifest/loader.js.map +1 -0
  42. package/dist/manifest/parser.d.ts +64 -0
  43. package/dist/manifest/parser.d.ts.map +1 -0
  44. package/dist/manifest/parser.js +135 -0
  45. package/dist/manifest/parser.js.map +1 -0
  46. package/dist/manifest/validator.d.ts +95 -0
  47. package/dist/manifest/validator.d.ts.map +1 -0
  48. package/dist/manifest/validator.js +258 -0
  49. package/dist/manifest/validator.js.map +1 -0
  50. package/dist/paths.d.ts +57 -0
  51. package/dist/paths.d.ts.map +1 -0
  52. package/dist/paths.js +93 -0
  53. package/dist/paths.js.map +1 -0
  54. package/dist/registry.d.ts +73 -0
  55. package/dist/registry.d.ts.map +1 -0
  56. package/dist/registry.js +147 -0
  57. package/dist/registry.js.map +1 -0
  58. package/dist/resolver.d.ts +89 -0
  59. package/dist/resolver.d.ts.map +1 -0
  60. package/dist/resolver.js +282 -0
  61. package/dist/resolver.js.map +1 -0
  62. package/dist/types/index.d.ts +6 -0
  63. package/dist/types/index.d.ts.map +1 -0
  64. package/dist/types/index.js +5 -0
  65. package/dist/types/index.js.map +1 -0
  66. package/dist/types/manifest.d.ts +201 -0
  67. package/dist/types/manifest.d.ts.map +1 -0
  68. package/dist/types/manifest.js +13 -0
  69. package/dist/types/manifest.js.map +1 -0
  70. package/dist/types.d.ts +5 -132
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +5 -3
  73. package/dist/types.js.map +1 -0
  74. package/dist/utils/fs.d.ts +105 -0
  75. package/dist/utils/fs.d.ts.map +1 -0
  76. package/dist/utils/fs.js +233 -0
  77. package/dist/utils/fs.js.map +1 -0
  78. package/dist/utils/logger.d.ts +102 -25
  79. package/dist/utils/logger.d.ts.map +1 -0
  80. package/dist/utils/logger.js +214 -57
  81. package/dist/utils/logger.js.map +1 -0
  82. package/dist/utils/version.d.ts +60 -2
  83. package/dist/utils/version.d.ts.map +1 -0
  84. package/dist/utils/version.js +255 -31
  85. package/dist/utils/version.js.map +1 -0
  86. package/package.json +16 -58
  87. package/src/config.ts +510 -0
  88. package/src/constants.ts +36 -0
  89. package/src/execution/command.ts +314 -0
  90. package/src/execution/index.ts +73 -0
  91. package/src/execution/runtime.ts +308 -0
  92. package/src/execution/types.ts +379 -0
  93. package/src/execution/validation.ts +508 -0
  94. package/src/index.ts +238 -30
  95. package/src/manifest/index.ts +36 -0
  96. package/src/manifest/loader.ts +187 -0
  97. package/src/manifest/parser.ts +173 -0
  98. package/src/manifest/validator.ts +309 -0
  99. package/src/paths.ts +108 -0
  100. package/src/registry.ts +219 -0
  101. package/src/resolver.ts +345 -0
  102. package/src/types/index.ts +30 -0
  103. package/src/types/manifest.ts +255 -0
  104. package/src/types.ts +5 -188
  105. package/src/utils/fs.ts +281 -0
  106. package/src/utils/logger.ts +270 -59
  107. package/src/utils/version.ts +304 -36
  108. package/tests/config.test.ts +515 -0
  109. package/tests/execution/command.test.ts +317 -0
  110. package/tests/execution/validation.test.ts +384 -0
  111. package/tests/fixtures/invalid-tool.yaml +4 -0
  112. package/tests/fixtures/valid-tool.md +62 -0
  113. package/tests/fixtures/valid-tool.yaml +40 -0
  114. package/tests/index.test.ts +8 -0
  115. package/tests/manifest/loader.test.ts +291 -0
  116. package/tests/manifest/parser.test.ts +345 -0
  117. package/tests/manifest/validator.test.ts +394 -0
  118. package/tests/manifest-types.test.ts +358 -0
  119. package/tests/paths.test.ts +153 -0
  120. package/tests/registry.test.ts +231 -0
  121. package/tests/resolver.test.ts +272 -0
  122. package/tests/utils/fs.test.ts +388 -0
  123. package/tests/utils/logger.test.ts +480 -0
  124. package/tests/utils/version.test.ts +390 -0
  125. package/tsconfig.json +12 -0
  126. package/dist/LocalToolResolver.d.ts +0 -84
  127. package/dist/LocalToolResolver.js +0 -353
  128. package/dist/api/enact-api.d.ts +0 -130
  129. package/dist/api/enact-api.js +0 -428
  130. package/dist/api/index.d.ts +0 -2
  131. package/dist/api/index.js +0 -2
  132. package/dist/api/types.d.ts +0 -103
  133. package/dist/api/types.js +0 -1
  134. package/dist/core/DaggerExecutionProvider.d.ts +0 -169
  135. package/dist/core/DaggerExecutionProvider.js +0 -1029
  136. package/dist/core/DirectExecutionProvider.d.ts +0 -23
  137. package/dist/core/DirectExecutionProvider.js +0 -406
  138. package/dist/core/EnactCore.d.ts +0 -162
  139. package/dist/core/EnactCore.js +0 -597
  140. package/dist/core/NativeExecutionProvider.d.ts +0 -9
  141. package/dist/core/NativeExecutionProvider.js +0 -16
  142. package/dist/core/index.d.ts +0 -3
  143. package/dist/core/index.js +0 -3
  144. package/dist/exec/index.d.ts +0 -3
  145. package/dist/exec/index.js +0 -3
  146. package/dist/exec/logger.d.ts +0 -11
  147. package/dist/exec/logger.js +0 -57
  148. package/dist/exec/validate.d.ts +0 -5
  149. package/dist/exec/validate.js +0 -167
  150. package/dist/lib/enact-direct.d.ts +0 -150
  151. package/dist/lib/enact-direct.js +0 -159
  152. package/dist/lib/index.d.ts +0 -1
  153. package/dist/lib/index.js +0 -1
  154. package/dist/security/index.d.ts +0 -3
  155. package/dist/security/index.js +0 -3
  156. package/dist/security/security.d.ts +0 -23
  157. package/dist/security/security.js +0 -137
  158. package/dist/security/sign.d.ts +0 -103
  159. package/dist/security/sign.js +0 -666
  160. package/dist/security/verification-enforcer.d.ts +0 -53
  161. package/dist/security/verification-enforcer.js +0 -204
  162. package/dist/services/McpCoreService.d.ts +0 -98
  163. package/dist/services/McpCoreService.js +0 -124
  164. package/dist/services/index.d.ts +0 -1
  165. package/dist/services/index.js +0 -1
  166. package/dist/utils/config.d.ts +0 -111
  167. package/dist/utils/config.js +0 -342
  168. package/dist/utils/env-loader.d.ts +0 -54
  169. package/dist/utils/env-loader.js +0 -270
  170. package/dist/utils/help.d.ts +0 -36
  171. package/dist/utils/help.js +0 -248
  172. package/dist/utils/index.d.ts +0 -7
  173. package/dist/utils/index.js +0 -7
  174. package/dist/utils/silent-monitor.d.ts +0 -67
  175. package/dist/utils/silent-monitor.js +0 -242
  176. package/dist/utils/timeout.d.ts +0 -5
  177. package/dist/utils/timeout.js +0 -23
  178. package/dist/web/env-manager-server.d.ts +0 -29
  179. package/dist/web/env-manager-server.js +0 -367
  180. package/dist/web/index.d.ts +0 -1
  181. package/dist/web/index.js +0 -1
  182. package/src/LocalToolResolver.ts +0 -424
  183. package/src/api/enact-api.ts +0 -604
  184. package/src/api/index.ts +0 -2
  185. package/src/api/types.ts +0 -114
  186. package/src/core/DaggerExecutionProvider.ts +0 -1357
  187. package/src/core/DirectExecutionProvider.ts +0 -484
  188. package/src/core/EnactCore.ts +0 -847
  189. package/src/core/index.ts +0 -3
  190. package/src/exec/index.ts +0 -3
  191. package/src/exec/logger.ts +0 -63
  192. package/src/exec/validate.ts +0 -238
  193. package/src/lib/enact-direct.ts +0 -254
  194. package/src/lib/index.ts +0 -1
  195. package/src/services/McpCoreService.ts +0 -201
  196. package/src/services/index.ts +0 -1
  197. package/src/utils/config.ts +0 -438
  198. package/src/utils/env-loader.ts +0 -370
  199. package/src/utils/help.ts +0 -257
  200. package/src/utils/index.ts +0 -7
  201. package/src/utils/silent-monitor.ts +0 -328
  202. package/src/utils/timeout.ts +0 -26
  203. package/src/web/env-manager-server.ts +0 -465
  204. package/src/web/index.ts +0 -1
  205. package/src/web/static/app.js +0 -663
  206. package/src/web/static/index.html +0 -117
  207. package/src/web/static/style.css +0 -291
@@ -1,75 +1,232 @@
1
- // src/utils/logger.ts
2
- import pc from "picocolors";
3
- export var LogLevel;
4
- (function (LogLevel) {
5
- LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
6
- LogLevel[LogLevel["INFO"] = 1] = "INFO";
7
- LogLevel[LogLevel["SUCCESS"] = 2] = "SUCCESS";
8
- LogLevel[LogLevel["WARN"] = 3] = "WARN";
9
- LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
10
- })(LogLevel || (LogLevel = {}));
11
- // Default log level
12
- let currentLogLevel = LogLevel.INFO;
13
1
  /**
14
- * Sets the current log level
2
+ * @enactprotocol/shared - Logger utility
3
+ *
4
+ * Provides structured logging with level filtering and
5
+ * configurable output formats (console with colors or JSON).
15
6
  */
16
- export function setLogLevel(level) {
17
- currentLogLevel = level;
18
- }
7
+ /** Level priorities (higher = more severe) */
8
+ const LEVEL_PRIORITY = {
9
+ debug: 0,
10
+ info: 1,
11
+ warn: 2,
12
+ error: 3,
13
+ silent: 4,
14
+ };
15
+ /** ANSI color codes */
16
+ const COLORS = {
17
+ reset: "\x1b[0m",
18
+ dim: "\x1b[2m",
19
+ bold: "\x1b[1m",
20
+ red: "\x1b[31m",
21
+ yellow: "\x1b[33m",
22
+ blue: "\x1b[34m",
23
+ cyan: "\x1b[36m",
24
+ gray: "\x1b[90m",
25
+ };
26
+ /** Level display colors */
27
+ const LEVEL_COLORS = {
28
+ debug: COLORS.gray,
29
+ info: COLORS.blue,
30
+ warn: COLORS.yellow,
31
+ error: COLORS.red,
32
+ };
33
+ /** Level labels for output */
34
+ const LEVEL_LABELS = {
35
+ debug: "DEBUG",
36
+ info: "INFO",
37
+ warn: "WARN",
38
+ error: "ERROR",
39
+ };
19
40
  /**
20
- * Debug log - only shown when log level is DEBUG
41
+ * Logger class with level filtering and structured output
21
42
  */
22
- export function debug(message) {
23
- if (currentLogLevel <= LogLevel.DEBUG) {
24
- console.error(pc.dim(`🔍 ${message}`));
43
+ export class Logger {
44
+ level;
45
+ format;
46
+ colors;
47
+ output;
48
+ errorOutput;
49
+ prefix;
50
+ constructor(options = {}) {
51
+ this.level = options.level ?? "info";
52
+ this.format = options.format ?? "console";
53
+ this.colors = options.colors ?? true;
54
+ this.output = options.output ?? console.log;
55
+ this.errorOutput = options.errorOutput ?? console.error;
56
+ this.prefix = options.prefix ?? "";
25
57
  }
26
- }
27
- /**
28
- * Info log - general information
29
- */
30
- export function info(message) {
31
- if (currentLogLevel <= LogLevel.INFO) {
32
- console.error(pc.blue(`ℹ️ ${message}`));
58
+ /**
59
+ * Check if a level should be logged
60
+ */
61
+ shouldLog(level) {
62
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[this.level];
63
+ }
64
+ /**
65
+ * Set the minimum log level
66
+ */
67
+ setLevel(level) {
68
+ this.level = level;
69
+ }
70
+ /**
71
+ * Get the current log level
72
+ */
73
+ getLevel() {
74
+ return this.level;
75
+ }
76
+ /**
77
+ * Set the output format
78
+ */
79
+ setFormat(format) {
80
+ this.format = format;
81
+ }
82
+ /**
83
+ * Enable or disable colors
84
+ */
85
+ setColors(enabled) {
86
+ this.colors = enabled;
87
+ }
88
+ /**
89
+ * Set the prefix for log messages
90
+ */
91
+ setPrefix(prefix) {
92
+ this.prefix = prefix;
93
+ }
94
+ /**
95
+ * Create a child logger with a prefix
96
+ */
97
+ child(prefix) {
98
+ const childPrefix = this.prefix ? `${this.prefix}:${prefix}` : prefix;
99
+ return new Logger({
100
+ level: this.level,
101
+ format: this.format,
102
+ colors: this.colors,
103
+ output: this.output,
104
+ errorOutput: this.errorOutput,
105
+ prefix: childPrefix,
106
+ });
107
+ }
108
+ /**
109
+ * Log a debug message
110
+ */
111
+ debug(message, context) {
112
+ this.log("debug", message, context);
113
+ }
114
+ /**
115
+ * Log an info message
116
+ */
117
+ info(message, context) {
118
+ this.log("info", message, context);
119
+ }
120
+ /**
121
+ * Log a warning message
122
+ */
123
+ warn(message, context) {
124
+ this.log("warn", message, context);
125
+ }
126
+ /**
127
+ * Log an error message
128
+ */
129
+ error(message, context) {
130
+ this.log("error", message, context);
131
+ }
132
+ /**
133
+ * Core logging method
134
+ */
135
+ log(level, message, context) {
136
+ if (!this.shouldLog(level)) {
137
+ return;
138
+ }
139
+ const entry = {
140
+ timestamp: new Date().toISOString(),
141
+ level,
142
+ message: this.prefix ? `[${this.prefix}] ${message}` : message,
143
+ context,
144
+ };
145
+ const formatted = this.format === "json" ? this.formatJson(entry) : this.formatConsole(entry);
146
+ // Use error output for warn/error levels
147
+ if (level === "warn" || level === "error") {
148
+ this.errorOutput(formatted);
149
+ }
150
+ else {
151
+ this.output(formatted);
152
+ }
153
+ }
154
+ /**
155
+ * Format entry as JSON
156
+ */
157
+ formatJson(entry) {
158
+ const obj = {
159
+ timestamp: entry.timestamp,
160
+ level: entry.level,
161
+ message: entry.message,
162
+ };
163
+ if (entry.context && Object.keys(entry.context).length > 0) {
164
+ obj.context = entry.context;
165
+ }
166
+ return JSON.stringify(obj);
167
+ }
168
+ /**
169
+ * Format entry for console with colors
170
+ */
171
+ formatConsole(entry) {
172
+ const parts = [];
173
+ // Timestamp (dim)
174
+ if (this.colors) {
175
+ parts.push(`${COLORS.dim}${entry.timestamp}${COLORS.reset}`);
176
+ }
177
+ else {
178
+ parts.push(entry.timestamp);
179
+ }
180
+ // Level label with color (only active levels, not silent)
181
+ const level = entry.level;
182
+ const label = LEVEL_LABELS[level];
183
+ if (this.colors) {
184
+ const color = LEVEL_COLORS[level];
185
+ parts.push(`${color}${label.padEnd(5)}${COLORS.reset}`);
186
+ }
187
+ else {
188
+ parts.push(label.padEnd(5));
189
+ }
190
+ // Message
191
+ parts.push(entry.message);
192
+ // Context (if any)
193
+ if (entry.context && Object.keys(entry.context).length > 0) {
194
+ const contextStr = JSON.stringify(entry.context);
195
+ if (this.colors) {
196
+ parts.push(`${COLORS.dim}${contextStr}${COLORS.reset}`);
197
+ }
198
+ else {
199
+ parts.push(contextStr);
200
+ }
201
+ }
202
+ return parts.join(" ");
33
203
  }
34
204
  }
35
205
  /**
36
- * Success log - operation completed successfully
206
+ * Default logger instance
37
207
  */
38
- export function success(message) {
39
- if (currentLogLevel <= LogLevel.SUCCESS) {
40
- console.error(pc.green(`✓ ${message}`));
41
- }
42
- }
208
+ let defaultLogger = new Logger();
43
209
  /**
44
- * Warning log - non-critical issues
210
+ * Get the default logger instance
45
211
  */
46
- export function warn(message) {
47
- if (currentLogLevel <= LogLevel.WARN) {
48
- console.error(pc.yellow(`⚠️ ${message}`));
49
- }
212
+ export function getLogger() {
213
+ return defaultLogger;
50
214
  }
51
215
  /**
52
- * Error log - critical issues
216
+ * Configure the default logger
53
217
  */
54
- export function error(message, details) {
55
- if (currentLogLevel <= LogLevel.ERROR) {
56
- console.error(pc.red(`✗ Error: ${message}`));
57
- if (details && currentLogLevel === LogLevel.DEBUG) {
58
- console.error(pc.dim("Details:"));
59
- console.error(details);
60
- }
61
- }
218
+ export function configureLogger(options) {
219
+ defaultLogger = new Logger(options);
62
220
  }
63
221
  /**
64
- * Table log - display tabular data
222
+ * Create a new logger with the given options
65
223
  */
66
- export function table(data, columns) {
67
- if (currentLogLevel <= LogLevel.INFO) {
68
- if (columns) {
69
- console.table(data, columns);
70
- }
71
- else {
72
- console.table(data);
73
- }
74
- }
224
+ export function createLogger(options) {
225
+ return new Logger(options);
75
226
  }
227
+ // Convenience exports for quick logging
228
+ export const debug = (message, context) => defaultLogger.debug(message, context);
229
+ export const info = (message, context) => defaultLogger.info(message, context);
230
+ export const warn = (message, context) => defaultLogger.warn(message, context);
231
+ export const error = (message, context) => defaultLogger.error(message, context);
232
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,62 @@
1
1
  /**
2
- * Displays the CLI version with nice formatting
2
+ * @enactprotocol/shared - Version utilities
3
+ *
4
+ * Provides semver parsing, comparison, and range checking.
3
5
  */
4
- export declare function showVersion(): void;
6
+ export interface ParsedVersion {
7
+ major: number;
8
+ minor: number;
9
+ patch: number;
10
+ prerelease?: string | undefined;
11
+ build?: string | undefined;
12
+ raw: string;
13
+ }
14
+ export interface VersionRange {
15
+ operator: "=" | ">" | ">=" | "<" | "<=" | "^" | "~";
16
+ version: ParsedVersion;
17
+ raw: string;
18
+ }
19
+ /**
20
+ * Parse a semver version string
21
+ * Supports: 1.0.0, 1.0, 1, 1.0.0-alpha, 1.0.0+build, 1.0.0-alpha+build
22
+ */
23
+ export declare function parseVersion(version: string): ParsedVersion | null;
24
+ /**
25
+ * Check if a string is a valid semver version
26
+ */
27
+ export declare function isValidVersion(version: string): boolean;
28
+ /**
29
+ * Compare two version strings
30
+ * @returns -1 if a < b, 0 if a === b, 1 if a > b
31
+ */
32
+ export declare function compareVersions(a: string, b: string): -1 | 0 | 1;
33
+ /**
34
+ * Parse a version range string
35
+ * Supports: =1.0.0, >1.0.0, >=1.0.0, <1.0.0, <=1.0.0, ^1.0.0, ~1.0.0
36
+ */
37
+ export declare function parseRange(range: string): VersionRange | null;
38
+ /**
39
+ * Check if a version satisfies a range
40
+ */
41
+ export declare function satisfiesRange(version: string, range: string): boolean;
42
+ /**
43
+ * Sort versions in ascending order
44
+ */
45
+ export declare function sortVersions(versions: string[]): string[];
46
+ /**
47
+ * Get the highest version from a list
48
+ */
49
+ export declare function getHighestVersion(versions: string[]): string | null;
50
+ /**
51
+ * Increment a version by bump type
52
+ */
53
+ export declare function incrementVersion(version: string, bump: "major" | "minor" | "patch"): string | null;
54
+ /**
55
+ * Coerce a string to a valid semver, filling in missing parts
56
+ */
57
+ export declare function coerceVersion(version: string): string | null;
58
+ /**
59
+ * Format a parsed version back to string
60
+ */
61
+ export declare function formatVersion(version: ParsedVersion): string;
62
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;IACpD,OAAO,EAAE,aAAa,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CA2BlE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAgChE;AA0CD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA6B7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAgDtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAEzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAOnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,GAChC,MAAM,GAAG,IAAI,CAYf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAS5D"}
@@ -1,35 +1,259 @@
1
- // src/utils/version.ts
2
- import pc from "picocolors";
3
- import { readFileSync } from "fs";
4
- import { join, dirname } from "path";
5
- import { fileURLToPath } from "url";
6
- /**
7
- * Displays the CLI version with nice formatting
8
- */
9
- export function showVersion() {
10
- let version = "0.0.1-dev";
11
- try {
12
- // Try to get version from environment first (for npm scripts)
13
- if (process.env.npm_package_version) {
14
- version = process.env.npm_package_version;
15
- }
16
- else {
17
- // When running as installed binary, read from package.json
18
- // Go up from shared/dist/utils/version.js to find package.json
19
- const currentFile = typeof __filename !== 'undefined' ? __filename : fileURLToPath(import.meta.url);
20
- const sharedDir = dirname(dirname(dirname(currentFile)));
21
- const packageJsonPath = join(sharedDir, 'package.json');
22
- const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
23
- version = packageJson.version;
1
+ /**
2
+ * @enactprotocol/shared - Version utilities
3
+ *
4
+ * Provides semver parsing, comparison, and range checking.
5
+ */
6
+ /**
7
+ * Parse a semver version string
8
+ * Supports: 1.0.0, 1.0, 1, 1.0.0-alpha, 1.0.0+build, 1.0.0-alpha+build
9
+ */
10
+ export function parseVersion(version) {
11
+ const trimmed = version.trim();
12
+ // Remove leading 'v' if present (common in tags)
13
+ const normalized = trimmed.startsWith("v") ? trimmed.slice(1) : trimmed;
14
+ // Full semver regex with prerelease and build metadata
15
+ const semverRegex = /^(\d+)(?:\.(\d+))?(?:\.(\d+))?(?:-([a-zA-Z0-9.-]+))?(?:\+([a-zA-Z0-9.-]+))?$/;
16
+ const match = normalized.match(semverRegex);
17
+ if (!match) {
18
+ return null;
19
+ }
20
+ const major = Number.parseInt(match[1] ?? "0", 10);
21
+ const minor = Number.parseInt(match[2] ?? "0", 10);
22
+ const patch = Number.parseInt(match[3] ?? "0", 10);
23
+ return {
24
+ major,
25
+ minor,
26
+ patch,
27
+ prerelease: match[4],
28
+ build: match[5],
29
+ raw: trimmed,
30
+ };
31
+ }
32
+ /**
33
+ * Check if a string is a valid semver version
34
+ */
35
+ export function isValidVersion(version) {
36
+ return parseVersion(version) !== null;
37
+ }
38
+ /**
39
+ * Compare two version strings
40
+ * @returns -1 if a < b, 0 if a === b, 1 if a > b
41
+ */
42
+ export function compareVersions(a, b) {
43
+ const parsedA = parseVersion(a);
44
+ const parsedB = parseVersion(b);
45
+ // Invalid versions sort last
46
+ if (!parsedA && !parsedB)
47
+ return 0;
48
+ if (!parsedA)
49
+ return 1;
50
+ if (!parsedB)
51
+ return -1;
52
+ // Compare major.minor.patch
53
+ if (parsedA.major !== parsedB.major) {
54
+ return parsedA.major < parsedB.major ? -1 : 1;
55
+ }
56
+ if (parsedA.minor !== parsedB.minor) {
57
+ return parsedA.minor < parsedB.minor ? -1 : 1;
58
+ }
59
+ if (parsedA.patch !== parsedB.patch) {
60
+ return parsedA.patch < parsedB.patch ? -1 : 1;
61
+ }
62
+ // Prerelease comparison
63
+ // A version without prerelease is greater than one with
64
+ if (!parsedA.prerelease && parsedB.prerelease)
65
+ return 1;
66
+ if (parsedA.prerelease && !parsedB.prerelease)
67
+ return -1;
68
+ // Both have prereleases - compare lexically
69
+ if (parsedA.prerelease && parsedB.prerelease) {
70
+ const prereleaseCompare = comparePrerelease(parsedA.prerelease, parsedB.prerelease);
71
+ if (prereleaseCompare !== 0)
72
+ return prereleaseCompare;
73
+ }
74
+ return 0;
75
+ }
76
+ /**
77
+ * Compare prerelease strings according to semver rules
78
+ */
79
+ function comparePrerelease(a, b) {
80
+ const partsA = a.split(".");
81
+ const partsB = b.split(".");
82
+ for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) {
83
+ const partA = partsA[i];
84
+ const partB = partsB[i];
85
+ // Shorter prerelease is less than longer
86
+ if (partA === undefined)
87
+ return -1;
88
+ if (partB === undefined)
89
+ return 1;
90
+ const numA = Number.parseInt(partA, 10);
91
+ const numB = Number.parseInt(partB, 10);
92
+ const isNumA = !Number.isNaN(numA) && String(numA) === partA;
93
+ const isNumB = !Number.isNaN(numB) && String(numB) === partB;
94
+ // Numeric identifiers are less than alphanumeric
95
+ if (isNumA && !isNumB)
96
+ return -1;
97
+ if (!isNumA && isNumB)
98
+ return 1;
99
+ // Both numeric - compare as numbers
100
+ if (isNumA && isNumB) {
101
+ if (numA < numB)
102
+ return -1;
103
+ if (numA > numB)
104
+ return 1;
105
+ continue;
24
106
  }
107
+ // Both alphanumeric - compare lexically
108
+ if (partA < partB)
109
+ return -1;
110
+ if (partA > partB)
111
+ return 1;
112
+ }
113
+ return 0;
114
+ }
115
+ /**
116
+ * Parse a version range string
117
+ * Supports: =1.0.0, >1.0.0, >=1.0.0, <1.0.0, <=1.0.0, ^1.0.0, ~1.0.0
118
+ */
119
+ export function parseRange(range) {
120
+ const trimmed = range.trim();
121
+ // Match operator at start
122
+ const rangeRegex = /^([=><^~]+)?\s*(.+)$/;
123
+ const match = trimmed.match(rangeRegex);
124
+ if (!match || !match[2]) {
125
+ return null;
126
+ }
127
+ const operator = (match[1] ?? "=");
128
+ const versionStr = match[2];
129
+ // Validate operator
130
+ if (!["=", ">", ">=", "<", "<=", "^", "~"].includes(operator)) {
131
+ return null;
132
+ }
133
+ const version = parseVersion(versionStr);
134
+ if (!version) {
135
+ return null;
136
+ }
137
+ return {
138
+ operator,
139
+ version,
140
+ raw: trimmed,
141
+ };
142
+ }
143
+ /**
144
+ * Check if a version satisfies a range
145
+ */
146
+ export function satisfiesRange(version, range) {
147
+ const parsedVersion = parseVersion(version);
148
+ const parsedRange = parseRange(range);
149
+ if (!parsedVersion || !parsedRange) {
150
+ return false;
151
+ }
152
+ const comparison = compareVersions(version, parsedRange.version.raw);
153
+ switch (parsedRange.operator) {
154
+ case "=":
155
+ return comparison === 0;
156
+ case ">":
157
+ return comparison === 1;
158
+ case ">=":
159
+ return comparison >= 0;
160
+ case "<":
161
+ return comparison === -1;
162
+ case "<=":
163
+ return comparison <= 0;
164
+ case "^":
165
+ // Caret range: compatible changes (same major, >= version)
166
+ // ^1.2.3 := >=1.2.3 <2.0.0
167
+ // ^0.2.3 := >=0.2.3 <0.3.0
168
+ // ^0.0.3 := >=0.0.3 <0.0.4
169
+ if (comparison === -1)
170
+ return false;
171
+ if (parsedRange.version.major === 0) {
172
+ if (parsedRange.version.minor === 0) {
173
+ // ^0.0.x - must be exact patch
174
+ return parsedVersion.patch === parsedRange.version.patch;
175
+ }
176
+ // ^0.x - must be same minor
177
+ return parsedVersion.minor === parsedRange.version.minor;
178
+ }
179
+ // ^x - must be same major
180
+ return parsedVersion.major === parsedRange.version.major;
181
+ case "~":
182
+ // Tilde range: patch-level changes (same major.minor, >= version)
183
+ // ~1.2.3 := >=1.2.3 <1.3.0
184
+ if (comparison === -1)
185
+ return false;
186
+ return (parsedVersion.major === parsedRange.version.major &&
187
+ parsedVersion.minor === parsedRange.version.minor);
188
+ default:
189
+ return false;
190
+ }
191
+ }
192
+ /**
193
+ * Sort versions in ascending order
194
+ */
195
+ export function sortVersions(versions) {
196
+ return [...versions].sort(compareVersions);
197
+ }
198
+ /**
199
+ * Get the highest version from a list
200
+ */
201
+ export function getHighestVersion(versions) {
202
+ const valid = versions.filter(isValidVersion);
203
+ if (valid.length === 0)
204
+ return null;
205
+ const sorted = sortVersions(valid);
206
+ const last = sorted[sorted.length - 1];
207
+ return last ?? null;
208
+ }
209
+ /**
210
+ * Increment a version by bump type
211
+ */
212
+ export function incrementVersion(version, bump) {
213
+ const parsed = parseVersion(version);
214
+ if (!parsed)
215
+ return null;
216
+ switch (bump) {
217
+ case "major":
218
+ return `${parsed.major + 1}.0.0`;
219
+ case "minor":
220
+ return `${parsed.major}.${parsed.minor + 1}.0`;
221
+ case "patch":
222
+ return `${parsed.major}.${parsed.minor}.${parsed.patch + 1}`;
223
+ }
224
+ }
225
+ /**
226
+ * Coerce a string to a valid semver, filling in missing parts
227
+ */
228
+ export function coerceVersion(version) {
229
+ const trimmed = version.trim();
230
+ const normalized = trimmed.startsWith("v") ? trimmed.slice(1) : trimmed;
231
+ // Try parsing as-is first
232
+ const parsed = parseVersion(normalized);
233
+ if (parsed) {
234
+ return `${parsed.major}.${parsed.minor}.${parsed.patch}`;
235
+ }
236
+ // Try extracting numbers
237
+ const numbers = normalized.match(/^(\d+)(?:\.(\d+))?(?:\.(\d+))?/);
238
+ if (!numbers) {
239
+ return null;
240
+ }
241
+ const major = Number.parseInt(numbers[1] ?? "0", 10);
242
+ const minor = Number.parseInt(numbers[2] ?? "0", 10);
243
+ const patch = Number.parseInt(numbers[3] ?? "0", 10);
244
+ return `${major}.${minor}.${patch}`;
245
+ }
246
+ /**
247
+ * Format a parsed version back to string
248
+ */
249
+ export function formatVersion(version) {
250
+ let result = `${version.major}.${version.minor}.${version.patch}`;
251
+ if (version.prerelease) {
252
+ result += `-${version.prerelease}`;
25
253
  }
26
- catch (error) {
27
- // Fall back to default version if anything fails
28
- version = "1.0.14";
254
+ if (version.build) {
255
+ result += `+${version.build}`;
29
256
  }
30
- const versionText = `v${version}`;
31
- console.error(`
32
- ${pc.bold("Enact CLI")} ${pc.cyan(versionText)}
33
- ${pc.dim("A tool to create and publish enact documents.")}
34
- `);
257
+ return result;
35
258
  }
259
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/utils/version.ts"],"names":[],"mappings":"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"}