@aneuhold/core-ts-lib 2.2.9 → 2.2.11
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.
- package/lib/index.d.ts +5 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -1
- package/lib/index.ts +5 -2
- package/lib/services/ChangelogService/ChangelogFileService.d.ts +42 -0
- package/lib/services/ChangelogService/ChangelogFileService.d.ts.map +1 -0
- package/lib/services/ChangelogService/ChangelogFileService.js +65 -0
- package/lib/services/ChangelogService/ChangelogFileService.js.map +1 -0
- package/lib/services/ChangelogService/ChangelogFileService.ts +68 -0
- package/lib/services/ChangelogService/ChangelogGenerator.d.ts +58 -0
- package/lib/services/ChangelogService/ChangelogGenerator.d.ts.map +1 -0
- package/lib/services/ChangelogService/ChangelogGenerator.js +145 -0
- package/lib/services/ChangelogService/ChangelogGenerator.js.map +1 -0
- package/lib/services/ChangelogService/ChangelogGenerator.ts +188 -0
- package/lib/services/ChangelogService/ChangelogParser.d.ts +21 -0
- package/lib/services/ChangelogService/ChangelogParser.d.ts.map +1 -0
- package/lib/services/ChangelogService/ChangelogParser.js +76 -0
- package/lib/services/ChangelogService/ChangelogParser.js.map +1 -0
- package/lib/services/ChangelogService/ChangelogParser.ts +94 -0
- package/lib/services/ChangelogService/ChangelogService.d.ts +54 -0
- package/lib/services/ChangelogService/ChangelogService.d.ts.map +1 -0
- package/lib/services/ChangelogService/ChangelogService.js +201 -0
- package/lib/services/ChangelogService/ChangelogService.js.map +1 -0
- package/lib/services/ChangelogService/ChangelogService.ts +293 -0
- package/lib/services/ChangelogService/ChangelogValidator.d.ts +15 -0
- package/lib/services/ChangelogService/ChangelogValidator.d.ts.map +1 -0
- package/lib/services/ChangelogService/ChangelogValidator.js +44 -0
- package/lib/services/ChangelogService/ChangelogValidator.js.map +1 -0
- package/lib/services/ChangelogService/ChangelogValidator.ts +55 -0
- package/lib/services/ChangelogService/GitTagService.d.ts +29 -0
- package/lib/services/ChangelogService/GitTagService.d.ts.map +1 -0
- package/lib/services/ChangelogService/GitTagService.js +57 -0
- package/lib/services/ChangelogService/GitTagService.js.map +1 -0
- package/lib/services/ChangelogService/GitTagService.ts +60 -0
- package/lib/services/ChangelogService/RepositoryInfoService.d.ts +14 -0
- package/lib/services/ChangelogService/RepositoryInfoService.d.ts.map +1 -0
- package/lib/services/ChangelogService/RepositoryInfoService.js +55 -0
- package/lib/services/ChangelogService/RepositoryInfoService.js.map +1 -0
- package/lib/services/ChangelogService/RepositoryInfoService.ts +64 -0
- package/lib/services/ChangelogService/index.d.ts +2 -0
- package/lib/services/ChangelogService/index.d.ts.map +1 -0
- package/lib/services/ChangelogService/index.js +2 -0
- package/lib/services/ChangelogService/index.js.map +1 -0
- package/lib/services/ChangelogService/index.ts +1 -0
- package/lib/services/ChangelogService/types.d.ts +27 -0
- package/lib/services/ChangelogService/types.d.ts.map +1 -0
- package/lib/services/ChangelogService/types.js +3 -0
- package/lib/services/ChangelogService/types.js.map +1 -0
- package/lib/services/ChangelogService/types.ts +30 -0
- package/lib/services/DependencyService.d.ts +2 -9
- package/lib/services/DependencyService.d.ts.map +1 -1
- package/lib/services/DependencyService.js +2 -11
- package/lib/services/DependencyService.js.map +1 -1
- package/lib/services/DependencyService.ts +2 -11
- package/lib/services/PackageService/JsrPackageService.d.ts +81 -0
- package/lib/services/PackageService/JsrPackageService.d.ts.map +1 -0
- package/lib/services/{PackageService.js → PackageService/JsrPackageService.js} +70 -312
- package/lib/services/PackageService/JsrPackageService.js.map +1 -0
- package/lib/services/{PackageService.ts → PackageService/JsrPackageService.ts} +79 -372
- package/lib/services/PackageService/NpmPackageService.d.ts +45 -0
- package/lib/services/PackageService/NpmPackageService.d.ts.map +1 -0
- package/lib/services/PackageService/NpmPackageService.js +146 -0
- package/lib/services/PackageService/NpmPackageService.js.map +1 -0
- package/lib/services/PackageService/NpmPackageService.ts +178 -0
- package/lib/services/PackageService/PackageService.d.ts +77 -0
- package/lib/services/PackageService/PackageService.d.ts.map +1 -0
- package/lib/services/PackageService/PackageService.js +96 -0
- package/lib/services/PackageService/PackageService.js.map +1 -0
- package/lib/services/PackageService/PackageService.ts +108 -0
- package/lib/services/PackageService/PackageServiceUtils.d.ts +69 -0
- package/lib/services/PackageService/PackageServiceUtils.d.ts.map +1 -0
- package/lib/services/PackageService/PackageServiceUtils.js +185 -0
- package/lib/services/PackageService/PackageServiceUtils.js.map +1 -0
- package/lib/services/PackageService/PackageServiceUtils.ts +239 -0
- package/lib/services/StringService.d.ts +12 -0
- package/lib/services/StringService.d.ts.map +1 -1
- package/lib/services/StringService.js +56 -0
- package/lib/services/StringService.js.map +1 -1
- package/lib/services/StringService.ts +72 -0
- package/lib/types/VersionType.d.ts +9 -0
- package/lib/types/VersionType.d.ts.map +1 -0
- package/lib/types/VersionType.js +10 -0
- package/lib/types/VersionType.js.map +1 -0
- package/lib/types/VersionType.ts +8 -0
- package/package.json +7 -6
- package/lib/services/PackageService.d.ts +0 -159
- package/lib/services/PackageService.d.ts.map +0 -1
- 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 '
|
|
6
|
-
import { DR } from '
|
|
7
|
-
import DependencyService from '
|
|
8
|
-
import FileSystemService from '
|
|
9
|
-
import
|
|
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
|
-
*
|
|
13
|
-
* for the current project.
|
|
12
|
+
* Service for handling JSR-specific package operations including validation and publishing.
|
|
14
13
|
*/
|
|
15
|
-
export default class
|
|
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
|
|
28
|
-
|
|
29
|
-
|
|
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
|
|
34
|
+
await PackageServiceUtils.replacePackageName(originalPackageName, packageName);
|
|
39
35
|
}
|
|
40
|
-
await
|
|
41
|
-
const { version
|
|
42
|
-
const successfulDryRun = await
|
|
43
|
-
await
|
|
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
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
62
|
+
await PackageServiceUtils.replacePackageName(originalPackageName, packageName);
|
|
70
63
|
}
|
|
71
|
-
await
|
|
72
|
-
await
|
|
73
|
-
const result = await
|
|
74
|
-
await
|
|
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
|
|
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
|
|
120
|
+
static async publishDryRun(packageName, currentVersion) {
|
|
249
121
|
// Check for existing versions on JSR first
|
|
250
|
-
await
|
|
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
|
|
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
|
-
*
|
|
289
|
-
*
|
|
290
|
-
*
|
|
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
|
|
164
|
+
* @param packageName The package name from jsr.json
|
|
336
165
|
* @param currentVersion The current version from package.json
|
|
337
166
|
*/
|
|
338
|
-
static async
|
|
339
|
-
DR.logger.info(`Checking
|
|
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(`
|
|
342
|
-
// Parse the
|
|
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
|
-
|
|
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
|
|
352
|
-
if (errorString.includes('
|
|
353
|
-
DR.logger.info('Package not found on
|
|
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
|
|
361
|
-
DR.logger.warn(`Could not check
|
|
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
|
-
*
|
|
457
|
-
*
|
|
458
|
-
*
|
|
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
|
|
461
|
-
* @param
|
|
289
|
+
* @param packageJsonData The package.json data to modify
|
|
290
|
+
* @param packageJsonPath The path to the package.json file
|
|
462
291
|
*/
|
|
463
|
-
static async
|
|
464
|
-
DR.logger.info(`Checking JSR for existing versions of ${packageName}...`);
|
|
292
|
+
static async resolveWildcardDependenciesInPackageJson(packageJsonData, packageJsonPath) {
|
|
465
293
|
try {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
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
|
-
|
|
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=
|
|
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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"}
|