@enactprotocol/shared 2.0.0 → 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 (88) hide show
  1. package/dist/config.d.ts +164 -0
  2. package/dist/config.d.ts.map +1 -0
  3. package/dist/config.js +386 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/constants.d.ts +17 -0
  6. package/dist/constants.d.ts.map +1 -0
  7. package/dist/constants.js +26 -0
  8. package/dist/constants.js.map +1 -0
  9. package/dist/execution/command.d.ts +102 -0
  10. package/dist/execution/command.d.ts.map +1 -0
  11. package/dist/execution/command.js +262 -0
  12. package/dist/execution/command.js.map +1 -0
  13. package/dist/execution/index.d.ts +12 -0
  14. package/dist/execution/index.d.ts.map +1 -0
  15. package/dist/execution/index.js +17 -0
  16. package/dist/execution/index.js.map +1 -0
  17. package/dist/execution/runtime.d.ts +82 -0
  18. package/dist/execution/runtime.d.ts.map +1 -0
  19. package/dist/execution/runtime.js +273 -0
  20. package/dist/execution/runtime.js.map +1 -0
  21. package/dist/execution/types.d.ts +306 -0
  22. package/dist/execution/types.d.ts.map +1 -0
  23. package/dist/execution/types.js +14 -0
  24. package/dist/execution/types.js.map +1 -0
  25. package/dist/execution/validation.d.ts +43 -0
  26. package/dist/execution/validation.d.ts.map +1 -0
  27. package/dist/execution/validation.js +430 -0
  28. package/dist/execution/validation.js.map +1 -0
  29. package/dist/index.d.ts +21 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +49 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/manifest/index.d.ts +7 -0
  34. package/dist/manifest/index.d.ts.map +1 -0
  35. package/dist/manifest/index.js +10 -0
  36. package/dist/manifest/index.js.map +1 -0
  37. package/dist/manifest/loader.d.ts +76 -0
  38. package/dist/manifest/loader.d.ts.map +1 -0
  39. package/dist/manifest/loader.js +146 -0
  40. package/dist/manifest/loader.js.map +1 -0
  41. package/dist/manifest/parser.d.ts +64 -0
  42. package/dist/manifest/parser.d.ts.map +1 -0
  43. package/dist/manifest/parser.js +135 -0
  44. package/dist/manifest/parser.js.map +1 -0
  45. package/dist/manifest/validator.d.ts +95 -0
  46. package/dist/manifest/validator.d.ts.map +1 -0
  47. package/dist/manifest/validator.js +258 -0
  48. package/dist/manifest/validator.js.map +1 -0
  49. package/dist/paths.d.ts +57 -0
  50. package/dist/paths.d.ts.map +1 -0
  51. package/dist/paths.js +93 -0
  52. package/dist/paths.js.map +1 -0
  53. package/dist/registry.d.ts +73 -0
  54. package/dist/registry.d.ts.map +1 -0
  55. package/dist/registry.js +147 -0
  56. package/dist/registry.js.map +1 -0
  57. package/dist/resolver.d.ts +89 -0
  58. package/dist/resolver.d.ts.map +1 -0
  59. package/dist/resolver.js +282 -0
  60. package/dist/resolver.js.map +1 -0
  61. package/dist/types/index.d.ts +6 -0
  62. package/dist/types/index.d.ts.map +1 -0
  63. package/dist/types/index.js +5 -0
  64. package/dist/types/index.js.map +1 -0
  65. package/dist/types/manifest.d.ts +201 -0
  66. package/dist/types/manifest.d.ts.map +1 -0
  67. package/dist/types/manifest.js +13 -0
  68. package/dist/types/manifest.js.map +1 -0
  69. package/dist/types.d.ts +5 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +5 -0
  72. package/dist/types.js.map +1 -0
  73. package/dist/utils/fs.d.ts +105 -0
  74. package/dist/utils/fs.d.ts.map +1 -0
  75. package/dist/utils/fs.js +233 -0
  76. package/dist/utils/fs.js.map +1 -0
  77. package/dist/utils/logger.d.ts +112 -0
  78. package/dist/utils/logger.d.ts.map +1 -0
  79. package/dist/utils/logger.js +232 -0
  80. package/dist/utils/logger.js.map +1 -0
  81. package/dist/utils/version.d.ts +62 -0
  82. package/dist/utils/version.d.ts.map +1 -0
  83. package/dist/utils/version.js +259 -0
  84. package/dist/utils/version.js.map +1 -0
  85. package/package.json +2 -2
  86. package/src/config.ts +36 -2
  87. package/src/index.ts +1 -0
  88. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @enactprotocol/shared - Version utilities
3
+ *
4
+ * Provides semver parsing, comparison, and range checking.
5
+ */
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"}
@@ -0,0 +1,259 @@
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;
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}`;
253
+ }
254
+ if (version.build) {
255
+ result += `+${version.build}`;
256
+ }
257
+ return result;
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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@enactprotocol/shared",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Core business logic and utilities for Enact",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,7 +18,7 @@
18
18
  "typecheck": "tsc --noEmit"
19
19
  },
20
20
  "dependencies": {
21
- "@enactprotocol/trust": "2.0.0",
21
+ "@enactprotocol/trust": "workspace:*",
22
22
  "js-yaml": "^4.1.1",
23
23
  "zod": "^4.1.13"
24
24
  },
package/src/config.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
7
- import { dirname } from "node:path";
7
+ import { dirname, join } from "node:path";
8
8
  import yaml from "js-yaml";
9
9
  import { getConfigPath, getEnactHome } from "./paths";
10
10
 
@@ -95,7 +95,7 @@ export const DEFAULT_CONFIG: EnactConfig = {
95
95
  verbose: false,
96
96
  },
97
97
  registry: {
98
- url: "https://enact.tools",
98
+ url: "https://siikwkfgsmouioodghho.supabase.co/functions/v1",
99
99
  },
100
100
  };
101
101
 
@@ -257,6 +257,40 @@ export function configExists(): boolean {
257
257
  return existsSync(getConfigPath());
258
258
  }
259
259
 
260
+ /**
261
+ * Ensure global setup is complete
262
+ * Creates ~/.enact/ directory structure and default config if they don't exist.
263
+ * This is a non-interactive initialization that runs silently.
264
+ * @returns true if setup was performed, false if already initialized
265
+ */
266
+ export function ensureGlobalSetup(): boolean {
267
+ const enactHome = getEnactHome();
268
+ const configPath = getConfigPath();
269
+ const cacheDir = join(enactHome, "cache");
270
+
271
+ let performedSetup = false;
272
+
273
+ // Ensure ~/.enact/ directory exists
274
+ if (!existsSync(enactHome)) {
275
+ mkdirSync(enactHome, { recursive: true });
276
+ performedSetup = true;
277
+ }
278
+
279
+ // Ensure ~/.enact/cache/ directory exists
280
+ if (!existsSync(cacheDir)) {
281
+ mkdirSync(cacheDir, { recursive: true });
282
+ performedSetup = true;
283
+ }
284
+
285
+ // Create default config if it doesn't exist
286
+ if (!existsSync(configPath)) {
287
+ saveConfig({ ...DEFAULT_CONFIG });
288
+ performedSetup = true;
289
+ }
290
+
291
+ return performedSetup;
292
+ }
293
+
260
294
  // =============================================================================
261
295
  // Local Trust Management
262
296
  // =============================================================================
package/src/index.ts CHANGED
@@ -40,6 +40,7 @@ export {
40
40
  setConfigValue,
41
41
  resetConfig,
42
42
  configExists,
43
+ ensureGlobalSetup,
43
44
  DEFAULT_CONFIG,
44
45
  // Local trust management (new unified API)
45
46
  getTrustedIdentities,