@aneuhold/core-ts-lib 2.2.8 → 2.2.10

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 (89) hide show
  1. package/lib/index.d.ts +5 -3
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js +3 -2
  4. package/lib/index.js.map +1 -1
  5. package/lib/index.ts +5 -2
  6. package/lib/services/ChangelogService/ChangelogFileService.d.ts +42 -0
  7. package/lib/services/ChangelogService/ChangelogFileService.d.ts.map +1 -0
  8. package/lib/services/ChangelogService/ChangelogFileService.js +65 -0
  9. package/lib/services/ChangelogService/ChangelogFileService.js.map +1 -0
  10. package/lib/services/ChangelogService/ChangelogFileService.ts +68 -0
  11. package/lib/services/ChangelogService/ChangelogGenerator.d.ts +58 -0
  12. package/lib/services/ChangelogService/ChangelogGenerator.d.ts.map +1 -0
  13. package/lib/services/ChangelogService/ChangelogGenerator.js +145 -0
  14. package/lib/services/ChangelogService/ChangelogGenerator.js.map +1 -0
  15. package/lib/services/ChangelogService/ChangelogGenerator.ts +188 -0
  16. package/lib/services/ChangelogService/ChangelogParser.d.ts +21 -0
  17. package/lib/services/ChangelogService/ChangelogParser.d.ts.map +1 -0
  18. package/lib/services/ChangelogService/ChangelogParser.js +59 -0
  19. package/lib/services/ChangelogService/ChangelogParser.js.map +1 -0
  20. package/lib/services/ChangelogService/ChangelogParser.ts +71 -0
  21. package/lib/services/ChangelogService/ChangelogService.d.ts +54 -0
  22. package/lib/services/ChangelogService/ChangelogService.d.ts.map +1 -0
  23. package/lib/services/ChangelogService/ChangelogService.js +201 -0
  24. package/lib/services/ChangelogService/ChangelogService.js.map +1 -0
  25. package/lib/services/ChangelogService/ChangelogService.ts +293 -0
  26. package/lib/services/ChangelogService/ChangelogValidator.d.ts +15 -0
  27. package/lib/services/ChangelogService/ChangelogValidator.d.ts.map +1 -0
  28. package/lib/services/ChangelogService/ChangelogValidator.js +44 -0
  29. package/lib/services/ChangelogService/ChangelogValidator.js.map +1 -0
  30. package/lib/services/ChangelogService/ChangelogValidator.ts +55 -0
  31. package/lib/services/ChangelogService/GitTagService.d.ts +29 -0
  32. package/lib/services/ChangelogService/GitTagService.d.ts.map +1 -0
  33. package/lib/services/ChangelogService/GitTagService.js +57 -0
  34. package/lib/services/ChangelogService/GitTagService.js.map +1 -0
  35. package/lib/services/ChangelogService/GitTagService.ts +60 -0
  36. package/lib/services/ChangelogService/RepositoryInfoService.d.ts +14 -0
  37. package/lib/services/ChangelogService/RepositoryInfoService.d.ts.map +1 -0
  38. package/lib/services/ChangelogService/RepositoryInfoService.js +55 -0
  39. package/lib/services/ChangelogService/RepositoryInfoService.js.map +1 -0
  40. package/lib/services/ChangelogService/RepositoryInfoService.ts +64 -0
  41. package/lib/services/ChangelogService/index.d.ts +2 -0
  42. package/lib/services/ChangelogService/index.d.ts.map +1 -0
  43. package/lib/services/ChangelogService/index.js +2 -0
  44. package/lib/services/ChangelogService/index.js.map +1 -0
  45. package/lib/services/ChangelogService/index.ts +1 -0
  46. package/lib/services/ChangelogService/types.d.ts +27 -0
  47. package/lib/services/ChangelogService/types.d.ts.map +1 -0
  48. package/lib/services/ChangelogService/types.js +3 -0
  49. package/lib/services/ChangelogService/types.js.map +1 -0
  50. package/lib/services/ChangelogService/types.ts +30 -0
  51. package/lib/services/DependencyService.d.ts +2 -9
  52. package/lib/services/DependencyService.d.ts.map +1 -1
  53. package/lib/services/DependencyService.js +2 -11
  54. package/lib/services/DependencyService.js.map +1 -1
  55. package/lib/services/DependencyService.ts +2 -11
  56. package/lib/services/PackageService/JsrPackageService.d.ts +81 -0
  57. package/lib/services/PackageService/JsrPackageService.d.ts.map +1 -0
  58. package/lib/services/{PackageService.js → PackageService/JsrPackageService.js} +70 -312
  59. package/lib/services/PackageService/JsrPackageService.js.map +1 -0
  60. package/lib/services/{PackageService.ts → PackageService/JsrPackageService.ts} +79 -372
  61. package/lib/services/PackageService/NpmPackageService.d.ts +45 -0
  62. package/lib/services/PackageService/NpmPackageService.d.ts.map +1 -0
  63. package/lib/services/PackageService/NpmPackageService.js +146 -0
  64. package/lib/services/PackageService/NpmPackageService.js.map +1 -0
  65. package/lib/services/PackageService/NpmPackageService.ts +178 -0
  66. package/lib/services/PackageService/PackageService.d.ts +77 -0
  67. package/lib/services/PackageService/PackageService.d.ts.map +1 -0
  68. package/lib/services/PackageService/PackageService.js +96 -0
  69. package/lib/services/PackageService/PackageService.js.map +1 -0
  70. package/lib/services/PackageService/PackageService.ts +108 -0
  71. package/lib/services/PackageService/PackageServiceUtils.d.ts +69 -0
  72. package/lib/services/PackageService/PackageServiceUtils.d.ts.map +1 -0
  73. package/lib/services/PackageService/PackageServiceUtils.js +185 -0
  74. package/lib/services/PackageService/PackageServiceUtils.js.map +1 -0
  75. package/lib/services/PackageService/PackageServiceUtils.ts +239 -0
  76. package/lib/services/StringService.d.ts +12 -0
  77. package/lib/services/StringService.d.ts.map +1 -1
  78. package/lib/services/StringService.js +56 -0
  79. package/lib/services/StringService.js.map +1 -1
  80. package/lib/services/StringService.ts +72 -0
  81. package/lib/types/VersionType.d.ts +9 -0
  82. package/lib/types/VersionType.d.ts.map +1 -0
  83. package/lib/types/VersionType.js +10 -0
  84. package/lib/types/VersionType.js.map +1 -0
  85. package/lib/types/VersionType.ts +8 -0
  86. package/package.json +8 -6
  87. package/lib/services/PackageService.d.ts +0 -159
  88. package/lib/services/PackageService.d.ts.map +0 -1
  89. package/lib/services/PackageService.js.map +0 -1
@@ -2,17 +2,16 @@ import { exec, spawn } from 'child_process';
2
2
  import { access, readFile, writeFile } from 'fs/promises';
3
3
  import path from 'path';
4
4
  import { promisify } from 'util';
5
- import ErrorUtils from '../utils/ErrorUtils.js';
6
- import { DR } from './DependencyRegistry.js';
7
- import DependencyService from './DependencyService.js';
8
- import FileSystemService from './FileSystemService/FileSystemService.js';
9
- import StringService from './StringService.js';
5
+ import ErrorUtils from '../../utils/ErrorUtils.js';
6
+ import { DR } from '../DependencyRegistry.js';
7
+ import DependencyService from '../DependencyService.js';
8
+ import FileSystemService from '../FileSystemService/FileSystemService.js';
9
+ import PackageServiceUtils from './PackageServiceUtils.js';
10
10
  const execAsync = promisify(exec);
11
11
  /**
12
- * A service which can be used to assist in publishing or validating packages
13
- * for the current project.
12
+ * Service for handling JSR-specific package operations including validation and publishing.
14
13
  */
15
- export default class PackageService {
14
+ export default class JsrPackageService {
16
15
  /**
17
16
  * Validates the current project for publishing to JSR. This will check if the
18
17
  * project has any pending changes first, then update the version of the
@@ -24,23 +23,20 @@ export default class PackageService {
24
23
  * **Warning:** This method uses simple string replacement for package names, which may have unintended effects
25
24
  * if the package name appears in unexpected places. Use with caution.
26
25
  */
27
- static async validateJsrPublish(alternativePackageNames) {
28
- if (await FileSystemService.hasPendingChanges()) {
29
- DR.logger.error('Please commit or stash your changes before publishing.');
30
- process.exit(1);
31
- }
32
- const { packageName: originalPackageName } = await PackageService.getPackageInfo();
26
+ static async validatePublish(alternativePackageNames) {
27
+ const { packageName: originalPackageName, version: currentVersion } = await PackageServiceUtils.getPackageInfo();
28
+ await PackageServiceUtils.validatePrePublishRequirements(currentVersion);
33
29
  const packageNamesToValidate = [originalPackageName, ...(alternativePackageNames || [])];
34
30
  for (const packageName of packageNamesToValidate) {
35
31
  const isAlternativeName = packageName !== originalPackageName;
36
32
  DR.logger.info(`Validating JSR publishing for package: ${packageName}`);
37
33
  if (isAlternativeName) {
38
- await PackageService.replacePackageName(originalPackageName, packageName);
34
+ await PackageServiceUtils.replacePackageName(originalPackageName, packageName);
39
35
  }
40
- await PackageService.replaceMonorepoImportsWithNpmSpecifiers();
41
- const { version: currentVersion } = await PackageService.updateJsrFromPackageJson();
42
- const successfulDryRun = await PackageService.publishJsrDryRun(packageName, currentVersion);
43
- await PackageService.resetGitChanges();
36
+ await this.replaceMonorepoImportsWithNpmSpecifiers();
37
+ const { version } = await JsrPackageService.updateJsrFromPackageJson();
38
+ const successfulDryRun = await JsrPackageService.publishDryRun(packageName, version);
39
+ await PackageServiceUtils.resetGitChanges();
44
40
  if (!successfulDryRun) {
45
41
  process.exit(1);
46
42
  }
@@ -55,112 +51,26 @@ export default class PackageService {
55
51
  * **Warning:** This method uses simple string replacement for package names, which may have unintended effects
56
52
  * if the package name appears in unexpected places. Use with caution.
57
53
  */
58
- static async publishToJsr(alternativePackageNames) {
59
- if (await FileSystemService.hasPendingChanges()) {
60
- DR.logger.error('Please commit or stash your changes before publishing.');
61
- process.exit(1);
62
- }
63
- const { packageName: originalPackageName } = await PackageService.getPackageInfo();
54
+ static async publish(alternativePackageNames) {
55
+ const { packageName: originalPackageName } = await PackageServiceUtils.getPackageInfo();
56
+ await PackageServiceUtils.validatePrePublishRequirements((await PackageServiceUtils.getPackageInfo()).version);
64
57
  const packageNamesToPublish = [originalPackageName, ...(alternativePackageNames || [])];
65
58
  for (const packageName of packageNamesToPublish) {
66
59
  const isAlternativeName = packageName !== originalPackageName;
67
60
  DR.logger.info(`Publishing to JSR for package: ${packageName}`);
68
61
  if (isAlternativeName) {
69
- await PackageService.replacePackageName(originalPackageName, packageName);
62
+ await PackageServiceUtils.replacePackageName(originalPackageName, packageName);
70
63
  }
71
- await PackageService.replaceMonorepoImportsWithNpmSpecifiers();
72
- await PackageService.updateJsrFromPackageJson();
73
- const result = await PackageService.publishJsr();
74
- await PackageService.resetGitChanges();
64
+ await this.replaceMonorepoImportsWithNpmSpecifiers();
65
+ await JsrPackageService.updateJsrFromPackageJson();
66
+ const result = await JsrPackageService.publishToJsr();
67
+ await PackageServiceUtils.resetGitChanges();
75
68
  if (!result) {
76
69
  process.exit(1);
77
70
  }
78
71
  }
79
72
  DR.logger.success('Successfully published to JSR for all package names.');
80
73
  }
81
- /**
82
- * Validates the current project for publishing to npm. This will run
83
- * `npm publish --access public --dry-run` and check for version conflicts
84
- * on the npm registry.
85
- *
86
- * @param alternativePackageNames Optional array of alternative package names to validate publishing under
87
- *
88
- * **Warning:** This method uses simple string replacement for package names, which may have unintended effects
89
- * if the package name appears in unexpected places. Use with caution.
90
- */
91
- static async validateNpmPublish(alternativePackageNames) {
92
- if (await FileSystemService.hasPendingChanges()) {
93
- DR.logger.error('Please commit or stash your changes before publishing.');
94
- process.exit(1);
95
- }
96
- const { packageName: originalPackageName, version: currentVersion } = await PackageService.getPackageInfo();
97
- const packageNamesToValidate = [originalPackageName, ...(alternativePackageNames || [])];
98
- for (const packageName of packageNamesToValidate) {
99
- const isAlternativeName = packageName !== originalPackageName;
100
- DR.logger.info(`Validating npm publishing for package: ${packageName}`);
101
- if (isAlternativeName) {
102
- await PackageService.replacePackageName(originalPackageName, packageName);
103
- }
104
- const successfulDryRun = await PackageService.publishNpmDryRun();
105
- if (!successfulDryRun) {
106
- if (isAlternativeName) {
107
- await PackageService.resetGitChanges();
108
- }
109
- process.exit(1);
110
- }
111
- await PackageService.checkNpmVersionConflicts(packageName, currentVersion);
112
- if (isAlternativeName) {
113
- await PackageService.resetGitChanges();
114
- }
115
- }
116
- DR.logger.success('Successfully validated npm publishing for all package names.');
117
- }
118
- /**
119
- * Publishes the current project to npm.
120
- *
121
- * @param alternativePackageNames Optional array of alternative package names to publish under
122
- *
123
- * **Warning:** This method uses simple string replacement for package names, which may have unintended effects
124
- * if the package name appears in unexpected places. Use with caution.
125
- */
126
- static async publishToNpm(alternativePackageNames) {
127
- if (await FileSystemService.hasPendingChanges()) {
128
- DR.logger.error('Please commit or stash your changes before publishing.');
129
- process.exit(1);
130
- }
131
- const { packageName: originalPackageName } = await PackageService.getPackageInfo();
132
- const packageNamesToPublish = [originalPackageName, ...(alternativePackageNames || [])];
133
- for (const packageName of packageNamesToPublish) {
134
- const isAlternativeName = packageName !== originalPackageName;
135
- DR.logger.info(`Publishing to npm for package: ${packageName}`);
136
- if (isAlternativeName) {
137
- await PackageService.replacePackageName(originalPackageName, packageName);
138
- }
139
- const result = await PackageService.publishNpm();
140
- if (isAlternativeName) {
141
- await PackageService.resetGitChanges();
142
- }
143
- if (!result) {
144
- process.exit(1);
145
- }
146
- }
147
- DR.logger.success('Successfully published to npm for all package names.');
148
- }
149
- /**
150
- * Test method for string replacement functionality. This method allows testing
151
- * the string replacement behavior without performing actual publishing operations.
152
- *
153
- * @param originalString The original string to replace
154
- * @param newString The new string to replace it with
155
- *
156
- * **Warning:** This method uses simple string replacement, which may have unintended effects
157
- * if the string appears in unexpected places. Use with caution.
158
- */
159
- static async testStringReplacement(originalString, newString) {
160
- DR.logger.info(`Testing string replacement from "${originalString}" to "${newString}"`);
161
- await PackageService.replacePackageName(originalString, newString);
162
- DR.logger.info('Test completed - package name replacement has been applied');
163
- }
164
74
  /**
165
75
  * Updates the jsr.json file from the package.json file and resolves wildcard
166
76
  * dependencies in package.json for JSR compatibility.
@@ -178,7 +88,7 @@ export default class PackageService {
178
88
  throw new Error('No jsr.json file found in the current directory.');
179
89
  }
180
90
  try {
181
- const { packageName, version } = await PackageService.getPackageInfo();
91
+ const { packageName, version } = await PackageServiceUtils.getPackageInfo();
182
92
  const packageJsonData = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
183
93
  const jsrJsonData = JSON.parse(await readFile(jsrJsonPath, 'utf-8'));
184
94
  // Update JSR version
@@ -198,44 +108,6 @@ export default class PackageService {
198
108
  throw error;
199
109
  }
200
110
  }
201
- /**
202
- * Resolves wildcard dependencies in package.json by replacing them with actual
203
- * version constraints (e.g., "*1.2.3") for JSR compatibility. This will
204
- * write the modified package.json back to disk.
205
- *
206
- * @param packageJsonData The package.json data to modify
207
- * @param packageJsonPath The path to the package.json file
208
- */
209
- static async resolveWildcardDependenciesInPackageJson(packageJsonData, packageJsonPath) {
210
- try {
211
- // Get all packages one directory up to resolve local wildcard dependencies
212
- const childPackages = await DependencyService.getChildPackageJsons('../');
213
- // Helper function to resolve dependencies
214
- const resolveDependencies = (deps) => {
215
- if (!deps)
216
- return;
217
- for (const [depName, depVersion] of Object.entries(deps)) {
218
- if (depVersion === '*' && depName in childPackages) {
219
- // Replace wildcard with "*" + actual version from the monorepo
220
- deps[depName] = `*${childPackages[depName].packageJsonContents.version}`;
221
- }
222
- }
223
- };
224
- // Resolve each dependency type
225
- resolveDependencies(packageJsonData.dependencies);
226
- resolveDependencies(packageJsonData.devDependencies);
227
- resolveDependencies(packageJsonData.peerDependencies);
228
- resolveDependencies(packageJsonData.optionalDependencies);
229
- // Write the updated package.json
230
- await writeFile(packageJsonPath, JSON.stringify(packageJsonData, null, 2));
231
- DR.logger.info('Resolved wildcard dependencies in package.json for JSR compatibility');
232
- }
233
- catch (error) {
234
- const errorString = ErrorUtils.getErrorString(error);
235
- DR.logger.error(`Failed to resolve wildcard dependencies: ${errorString}`);
236
- throw error;
237
- }
238
- }
239
111
  /**
240
112
  * Executes a dry run of JSR publishing. Returns true if the dry run was
241
113
  * successful, false otherwise. Also checks for existing versions on JSR
@@ -245,9 +117,9 @@ export default class PackageService {
245
117
  * @param packageName The package name from jsr.json
246
118
  * @param currentVersion The current version from package.json
247
119
  */
248
- static async publishJsrDryRun(packageName, currentVersion) {
120
+ static async publishDryRun(packageName, currentVersion) {
249
121
  // Check for existing versions on JSR first
250
- await this.checkJsrVersionConflicts(packageName, currentVersion);
122
+ await JsrPackageService.checkVersionConflicts(packageName, currentVersion);
251
123
  DR.logger.info('Running `jsr publish --dry-run`');
252
124
  try {
253
125
  const { stdout, stderr } = await execAsync('jsr publish --allow-dirty --dry-run');
@@ -267,7 +139,7 @@ export default class PackageService {
267
139
  *
268
140
  * @returns true if the publish was successful, false otherwise.
269
141
  */
270
- static async publishJsr() {
142
+ static async publishToJsr() {
271
143
  DR.logger.info('Running `jsr publish`');
272
144
  return new Promise((resolve) => {
273
145
  const child = spawn('jsr publish', ['--allow-dirty'], {
@@ -285,80 +157,37 @@ export default class PackageService {
285
157
  });
286
158
  }
287
159
  /**
288
- * Gets the package name and version from package.json.
289
- *
290
- * @returns An object containing the package name and version
291
- */
292
- static async getPackageInfo() {
293
- const rootDir = process.cwd();
294
- const packageJsonPath = path.join(rootDir, 'package.json');
295
- try {
296
- await access(packageJsonPath);
297
- }
298
- catch {
299
- throw new Error('No package.json file found in the current directory.');
300
- }
301
- try {
302
- const packageJsonData = JSON.parse(await readFile(packageJsonPath, 'utf-8'));
303
- return {
304
- packageName: packageJsonData.name,
305
- version: packageJsonData.version
306
- };
307
- }
308
- catch (error) {
309
- const errorString = ErrorUtils.getErrorString(error);
310
- DR.logger.error(`Failed to read package.json: ${errorString}`);
311
- throw error;
312
- }
313
- }
314
- /**
315
- * Executes a dry run of npm publishing.
316
- *
317
- * @returns true if the dry run was successful, false otherwise.
318
- */
319
- static async publishNpmDryRun() {
320
- DR.logger.info('Running `npm publish --access public --dry-run`');
321
- try {
322
- await execAsync('npm publish --access public --dry-run');
323
- DR.logger.info('npm dry run completed successfully.');
324
- }
325
- catch (error) {
326
- const errorString = ErrorUtils.getErrorString(error);
327
- DR.logger.error(`npm dry run failed: ${errorString}`);
328
- return false;
329
- }
330
- return true;
331
- }
332
- /**
333
- * Checks npm registry for package information and performs version conflict checks.
160
+ * Checks for version conflicts on JSR by looking up the current package
161
+ * and comparing versions. Throws an error if the current version already
162
+ * exists or if a higher version is already published.
334
163
  *
335
- * @param packageName The package name from package.json
164
+ * @param packageName The package name from jsr.json
336
165
  * @param currentVersion The current version from package.json
337
166
  */
338
- static async checkNpmVersionConflicts(packageName, currentVersion) {
339
- DR.logger.info(`Checking npm registry for existing versions of ${packageName}...`);
167
+ static async checkVersionConflicts(packageName, currentVersion) {
168
+ DR.logger.info(`Checking JSR for existing versions of ${packageName}...`);
340
169
  try {
341
- const { stdout } = await execAsync(`npm view ${packageName}`);
342
- // Parse the npm view output to extract the latest version
170
+ const { stdout } = await execAsync(`jsr view ${packageName}`);
171
+ // Parse the JSR view output to extract the latest version
343
172
  const latestVersionMatch = stdout.match(/latest:\s*([^\s|]+)/);
344
173
  if (latestVersionMatch) {
345
174
  const latestVersion = latestVersionMatch[1];
346
- PackageService.checkVersionConflict(currentVersion, latestVersion, 'npm');
175
+ PackageServiceUtils.checkVersionConflict(currentVersion, latestVersion, 'JSR');
347
176
  }
348
177
  }
349
178
  catch (error) {
350
179
  const errorString = ErrorUtils.getErrorString(error);
351
- // If the package doesn't exist on npm, that's fine for first publish
352
- if (errorString.includes('404') || errorString.includes('not found')) {
353
- DR.logger.info('Package not found on npm - this appears to be a first publish.');
180
+ // If the package doesn't exist on JSR, that's fine for first publish
181
+ if (errorString.includes('Package not found') || errorString.includes('404')) {
182
+ DR.logger.info('Package not found on JSR - this appears to be a first publish.');
354
183
  return;
355
184
  }
356
185
  // Re-throw version conflict errors
357
186
  if (errorString.includes('already exists') || errorString.includes('is lower than')) {
358
187
  throw error;
359
188
  }
360
- // For other npm command errors, log but don't block
361
- DR.logger.warn(`Could not check npm registry: ${errorString}`);
189
+ // For other JSR command errors, log but don't block
190
+ DR.logger.warn(`Could not check JSR versions: ${errorString}`);
362
191
  }
363
192
  }
364
193
  /**
@@ -453,113 +282,42 @@ export default class PackageService {
453
282
  DR.logger.info(`Completed monorepo import replacement: ${totalReplacements} total replacements made`);
454
283
  }
455
284
  /**
456
- * Checks for version conflicts on JSR by looking up the current package
457
- * and comparing versions. Throws an error if the current version already
458
- * exists or if a higher version is already published.
285
+ * Resolves wildcard dependencies in package.json by replacing them with actual
286
+ * version constraints (e.g., "*1.2.3") for JSR compatibility. This will
287
+ * write the modified package.json back to disk.
459
288
  *
460
- * @param packageName The package name from jsr.json
461
- * @param currentVersion The current version from package.json
289
+ * @param packageJsonData The package.json data to modify
290
+ * @param packageJsonPath The path to the package.json file
462
291
  */
463
- static async checkJsrVersionConflicts(packageName, currentVersion) {
464
- DR.logger.info(`Checking JSR for existing versions of ${packageName}...`);
292
+ static async resolveWildcardDependenciesInPackageJson(packageJsonData, packageJsonPath) {
465
293
  try {
466
- const { stdout } = await execAsync(`jsr view ${packageName}`);
467
- // Parse the JSR view output to extract the latest version
468
- const latestVersionMatch = stdout.match(/latest:\s*([^\s|]+)/);
469
- if (latestVersionMatch) {
470
- const latestVersion = latestVersionMatch[1];
471
- PackageService.checkVersionConflict(currentVersion, latestVersion, 'JSR');
472
- }
294
+ // Get all packages one directory up to resolve local wildcard dependencies
295
+ const childPackages = await DependencyService.getChildPackageJsons('../');
296
+ // Helper function to resolve dependencies
297
+ const resolveDependencies = (deps) => {
298
+ if (!deps)
299
+ return;
300
+ for (const [depName, depVersion] of Object.entries(deps)) {
301
+ if (depVersion === '*' && depName in childPackages) {
302
+ // Replace wildcard with "*" + actual version from the monorepo
303
+ deps[depName] = `*${childPackages[depName].packageJsonContents.version}`;
304
+ }
305
+ }
306
+ };
307
+ // Resolve each dependency type
308
+ resolveDependencies(packageJsonData.dependencies);
309
+ resolveDependencies(packageJsonData.devDependencies);
310
+ resolveDependencies(packageJsonData.peerDependencies);
311
+ resolveDependencies(packageJsonData.optionalDependencies);
312
+ // Write the updated package.json
313
+ await writeFile(packageJsonPath, JSON.stringify(packageJsonData, null, 2));
314
+ DR.logger.info('Resolved wildcard dependencies in package.json for JSR compatibility');
473
315
  }
474
316
  catch (error) {
475
317
  const errorString = ErrorUtils.getErrorString(error);
476
- // If the package doesn't exist on JSR, that's fine for first publish
477
- if (errorString.includes('Package not found') || errorString.includes('404')) {
478
- DR.logger.info('Package not found on JSR - this appears to be a first publish.');
479
- return;
480
- }
481
- // Re-throw version conflict errors
482
- if (errorString.includes('already exists') || errorString.includes('is lower than')) {
483
- throw error;
484
- }
485
- // For other JSR command errors, log but don't block
486
- DR.logger.warn(`Could not check JSR versions: ${errorString}`);
487
- }
488
- }
489
- /**
490
- * Common logic for checking version conflicts between current and latest versions.
491
- *
492
- * @param currentVersion The current version from package.json
493
- * @param latestVersion The latest published version
494
- * @param registryName The name of the registry (for error messages)
495
- */
496
- static checkVersionConflict(currentVersion, latestVersion, registryName) {
497
- DR.logger.info(`Current version: ${currentVersion}, Latest on ${registryName}: ${latestVersion}`);
498
- // Compare versions using semver-like comparison
499
- const comparison = StringService.compareSemanticVersions(currentVersion, latestVersion);
500
- if (comparison === 0) {
501
- throw new Error(`Version ${currentVersion} already exists on ${registryName}. Please bump the version before publishing.`);
502
- }
503
- else if (comparison < 0) {
504
- throw new Error(`Current version ${currentVersion} is lower than the latest published version ${latestVersion} on ${registryName}. Please bump the version.`);
505
- }
506
- DR.logger.info('Version check passed - ready to publish.');
507
- }
508
- /**
509
- * Replaces the package name in all files in the root directory, but no child directories,
510
- * with a new name.
511
- *
512
- * @param originalPackageName The original package name to replace
513
- * @param newPackageName The new package name to use
514
- */
515
- static async replacePackageName(originalPackageName, newPackageName) {
516
- DR.logger.info(`Replacing package name from "${originalPackageName}" to "${newPackageName}"`);
517
- const rootDir = process.cwd();
518
- // Replace in all files in the root directory
519
- await FileSystemService.replaceInFiles({
520
- searchString: originalPackageName,
521
- replaceString: newPackageName,
522
- rootPath: rootDir,
523
- includePatterns: ['*'],
524
- excludePatterns: []
525
- });
526
- DR.logger.info(`Successfully replaced package name in configuration files`);
527
- }
528
- /**
529
- * Performs a git reset to discard all changes in the working directory.
530
- * This is used between alternative package name operations.
531
- */
532
- static async resetGitChanges() {
533
- DR.logger.info('Resetting git changes');
534
- try {
535
- await execAsync('git reset --hard HEAD');
536
- }
537
- catch (error) {
538
- DR.logger.error(`Failed to reset git changes: ${ErrorUtils.getErrorString(error)}`);
318
+ DR.logger.error(`Failed to resolve wildcard dependencies: ${errorString}`);
539
319
  throw error;
540
320
  }
541
321
  }
542
- /**
543
- * Publishes the current project to npm.
544
- *
545
- * @returns true if the publish was successful, false otherwise.
546
- */
547
- static async publishNpm() {
548
- DR.logger.info('Running `npm publish --access public`');
549
- return new Promise((resolve) => {
550
- const child = spawn('npm publish', ['--access', 'public'], {
551
- stdio: 'inherit',
552
- shell: true
553
- });
554
- child.on('exit', (code) => {
555
- if (code === 0) {
556
- resolve(true);
557
- }
558
- else {
559
- resolve(false);
560
- }
561
- });
562
- });
563
- }
564
322
  }
565
- //# sourceMappingURL=PackageService.js.map
323
+ //# sourceMappingURL=JsrPackageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsrPackageService.js","sourceRoot":"","sources":["../../../src/services/PackageService/JsrPackageService.ts"],"names":[],"mappings":"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"}