@exyconn/common 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +121 -36
- package/dist/client/index.d.mts +3 -2
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.js +5059 -231
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +4951 -232
- package/dist/client/index.mjs.map +1 -1
- package/dist/client/utils/index.d.mts +123 -1
- package/dist/client/utils/index.d.ts +123 -1
- package/dist/client/utils/index.js +207 -0
- package/dist/client/utils/index.js.map +1 -1
- package/dist/client/utils/index.mjs +204 -1
- package/dist/client/utils/index.mjs.map +1 -1
- package/dist/index-BcxL4_V4.d.ts +2946 -0
- package/dist/{index-iTKxFa78.d.ts → index-DEzgM15j.d.ts} +10 -2
- package/dist/{index-ClWtDfwk.d.ts → index-DNFVgQx8.d.ts} +544 -2
- package/dist/{index-CcrANHAQ.d.mts → index-DbV04Dx8.d.mts} +10 -2
- package/dist/{index-DSW6JfD-.d.mts → index-DfqEP6Oe.d.mts} +544 -2
- package/dist/index-bvvCev9Q.d.mts +2946 -0
- package/dist/index.d.mts +433 -7
- package/dist/index.d.ts +433 -7
- package/dist/index.js +6101 -220
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +6083 -221
- package/dist/index.mjs.map +1 -1
- package/dist/server/index.d.mts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.js +197 -0
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +194 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/utils/index.d.mts +73 -1
- package/dist/server/utils/index.d.ts +73 -1
- package/dist/server/utils/index.js +199 -0
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs +195 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/shared/index.d.mts +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.js +296 -0
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/index.mjs +274 -1
- package/dist/shared/index.mjs.map +1 -1
- package/package.json +41 -4
- package/dist/index-BNdT-2X4.d.ts +0 -229
- package/dist/index-Du0LLt9f.d.mts +0 -229
|
@@ -282,4 +282,126 @@ declare const createSuccessResponse: <T>(data: T, message?: string) => ApiRespon
|
|
|
282
282
|
*/
|
|
283
283
|
declare const createErrorResponse: (message: string, statusCode?: number, error?: string) => ApiResponse<never>;
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
/**
|
|
286
|
+
* Package Check Utility
|
|
287
|
+
* Analyzes package.json dependencies and checks for updates
|
|
288
|
+
*
|
|
289
|
+
* Features:
|
|
290
|
+
* - Fetches package.json from URL or file path
|
|
291
|
+
* - Checks all dependency types (dependencies, devDependencies, peerDependencies, optionalDependencies)
|
|
292
|
+
* - Compares versions with npm registry
|
|
293
|
+
* - Provides update suggestions
|
|
294
|
+
* - Supports auto mode with npm-check-updates
|
|
295
|
+
*/
|
|
296
|
+
interface PackageVersion {
|
|
297
|
+
/** Package name */
|
|
298
|
+
name: string;
|
|
299
|
+
/** Current version in package.json */
|
|
300
|
+
current: string;
|
|
301
|
+
/** Latest version available on npm */
|
|
302
|
+
latest: string;
|
|
303
|
+
/** Is update available? */
|
|
304
|
+
hasUpdate: boolean;
|
|
305
|
+
/** Update type: major, minor, patch, or none */
|
|
306
|
+
updateType: 'major' | 'minor' | 'patch' | 'prerelease' | 'none';
|
|
307
|
+
/** Dependency type */
|
|
308
|
+
dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies';
|
|
309
|
+
}
|
|
310
|
+
interface PackageCheckResult {
|
|
311
|
+
/** Package name from package.json */
|
|
312
|
+
packageName: string;
|
|
313
|
+
/** Current package version */
|
|
314
|
+
packageVersion: string;
|
|
315
|
+
/** Total dependencies checked */
|
|
316
|
+
totalDependencies: number;
|
|
317
|
+
/** Dependencies with updates available */
|
|
318
|
+
outdatedCount: number;
|
|
319
|
+
/** All dependency information */
|
|
320
|
+
dependencies: PackageVersion[];
|
|
321
|
+
/** Dependencies grouped by type */
|
|
322
|
+
byType: {
|
|
323
|
+
dependencies: PackageVersion[];
|
|
324
|
+
devDependencies: PackageVersion[];
|
|
325
|
+
peerDependencies: PackageVersion[];
|
|
326
|
+
optionalDependencies: PackageVersion[];
|
|
327
|
+
};
|
|
328
|
+
/** Dependencies grouped by update type */
|
|
329
|
+
byUpdateType: {
|
|
330
|
+
major: PackageVersion[];
|
|
331
|
+
minor: PackageVersion[];
|
|
332
|
+
patch: PackageVersion[];
|
|
333
|
+
prerelease: PackageVersion[];
|
|
334
|
+
};
|
|
335
|
+
/** Timestamp of check */
|
|
336
|
+
checkedAt: Date;
|
|
337
|
+
/** Errors encountered */
|
|
338
|
+
errors: string[];
|
|
339
|
+
}
|
|
340
|
+
interface PackageJson {
|
|
341
|
+
name?: string;
|
|
342
|
+
version?: string;
|
|
343
|
+
dependencies?: Record<string, string>;
|
|
344
|
+
devDependencies?: Record<string, string>;
|
|
345
|
+
peerDependencies?: Record<string, string>;
|
|
346
|
+
optionalDependencies?: Record<string, string>;
|
|
347
|
+
}
|
|
348
|
+
interface NpmRegistryResponse {
|
|
349
|
+
'dist-tags': {
|
|
350
|
+
latest: string;
|
|
351
|
+
[key: string]: string;
|
|
352
|
+
};
|
|
353
|
+
versions: Record<string, unknown>;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Parse version string, removing range operators
|
|
357
|
+
*/
|
|
358
|
+
declare function parseVersion(version: string): string;
|
|
359
|
+
/**
|
|
360
|
+
* Compare two semver versions
|
|
361
|
+
*/
|
|
362
|
+
declare function compareVersions(current: string, latest: string): 'major' | 'minor' | 'patch' | 'prerelease' | 'none';
|
|
363
|
+
/**
|
|
364
|
+
* Main function to check package.json for updates
|
|
365
|
+
*
|
|
366
|
+
* @example
|
|
367
|
+
* // From URL
|
|
368
|
+
* const result = await checkPackage('https://raw.githubusercontent.com/user/repo/main/package.json');
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* // From object
|
|
372
|
+
* const result = await checkPackage({
|
|
373
|
+
* name: 'my-package',
|
|
374
|
+
* dependencies: { 'lodash': '^4.17.0' }
|
|
375
|
+
* });
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* // In Node.js, read file first
|
|
379
|
+
* import fs from 'fs';
|
|
380
|
+
* const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));
|
|
381
|
+
* const result = await checkPackage(pkg);
|
|
382
|
+
*/
|
|
383
|
+
declare function checkPackage(source: string | PackageJson): Promise<PackageCheckResult>;
|
|
384
|
+
/**
|
|
385
|
+
* Format check result as human-readable string
|
|
386
|
+
*/
|
|
387
|
+
declare function formatPackageCheckResult(result: PackageCheckResult): string;
|
|
388
|
+
/**
|
|
389
|
+
* Generate ncu (npm-check-updates) command
|
|
390
|
+
*/
|
|
391
|
+
declare function generateNcuCommand(result: PackageCheckResult, options?: {
|
|
392
|
+
updateType?: 'major' | 'minor' | 'patch' | 'all';
|
|
393
|
+
interactive?: boolean;
|
|
394
|
+
upgrade?: boolean;
|
|
395
|
+
}): string;
|
|
396
|
+
/**
|
|
397
|
+
* Package check utilities for client-side usage
|
|
398
|
+
*/
|
|
399
|
+
declare const packageCheck: {
|
|
400
|
+
readonly check: typeof checkPackage;
|
|
401
|
+
readonly format: typeof formatPackageCheckResult;
|
|
402
|
+
readonly generateNcuCommand: typeof generateNcuCommand;
|
|
403
|
+
readonly parseVersion: typeof parseVersion;
|
|
404
|
+
readonly compareVersions: typeof compareVersions;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export { ApiUrlBuilder, type ApiUrlConfig, EventEmitter, type NpmRegistryResponse, type PackageCheckResult, type PackageJson, type PackageVersion, addDays, appEvents, camelToKebab, capitalize, capitalizeWords, checkPackage, copyToClipboard, createApiEndpoints, createApiUrlBuilder, createEmptyPaginationMeta, createErrorResponse, createEventEmitter, createSuccessResponse, endOfDay, formatDate, formatDateForInput, formatDateTime, formatDateTimeForInput, formatPackageCheckResult, formatRelativeTime, generateNcuCommand, getErrorMessage, getNextPage, getPrevPage, getResponseData, hasData, hasMorePages, isClipboardAvailable, isErrorResponse, isFuture, isPast, isSuccessResponse, isToday, kebabToCamel, packageCheck, readFromClipboard, slugify, slugifyUnique, startOfDay, truncate, truncateWords, unslugify };
|
|
@@ -282,4 +282,126 @@ declare const createSuccessResponse: <T>(data: T, message?: string) => ApiRespon
|
|
|
282
282
|
*/
|
|
283
283
|
declare const createErrorResponse: (message: string, statusCode?: number, error?: string) => ApiResponse<never>;
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
/**
|
|
286
|
+
* Package Check Utility
|
|
287
|
+
* Analyzes package.json dependencies and checks for updates
|
|
288
|
+
*
|
|
289
|
+
* Features:
|
|
290
|
+
* - Fetches package.json from URL or file path
|
|
291
|
+
* - Checks all dependency types (dependencies, devDependencies, peerDependencies, optionalDependencies)
|
|
292
|
+
* - Compares versions with npm registry
|
|
293
|
+
* - Provides update suggestions
|
|
294
|
+
* - Supports auto mode with npm-check-updates
|
|
295
|
+
*/
|
|
296
|
+
interface PackageVersion {
|
|
297
|
+
/** Package name */
|
|
298
|
+
name: string;
|
|
299
|
+
/** Current version in package.json */
|
|
300
|
+
current: string;
|
|
301
|
+
/** Latest version available on npm */
|
|
302
|
+
latest: string;
|
|
303
|
+
/** Is update available? */
|
|
304
|
+
hasUpdate: boolean;
|
|
305
|
+
/** Update type: major, minor, patch, or none */
|
|
306
|
+
updateType: 'major' | 'minor' | 'patch' | 'prerelease' | 'none';
|
|
307
|
+
/** Dependency type */
|
|
308
|
+
dependencyType: 'dependencies' | 'devDependencies' | 'peerDependencies' | 'optionalDependencies';
|
|
309
|
+
}
|
|
310
|
+
interface PackageCheckResult {
|
|
311
|
+
/** Package name from package.json */
|
|
312
|
+
packageName: string;
|
|
313
|
+
/** Current package version */
|
|
314
|
+
packageVersion: string;
|
|
315
|
+
/** Total dependencies checked */
|
|
316
|
+
totalDependencies: number;
|
|
317
|
+
/** Dependencies with updates available */
|
|
318
|
+
outdatedCount: number;
|
|
319
|
+
/** All dependency information */
|
|
320
|
+
dependencies: PackageVersion[];
|
|
321
|
+
/** Dependencies grouped by type */
|
|
322
|
+
byType: {
|
|
323
|
+
dependencies: PackageVersion[];
|
|
324
|
+
devDependencies: PackageVersion[];
|
|
325
|
+
peerDependencies: PackageVersion[];
|
|
326
|
+
optionalDependencies: PackageVersion[];
|
|
327
|
+
};
|
|
328
|
+
/** Dependencies grouped by update type */
|
|
329
|
+
byUpdateType: {
|
|
330
|
+
major: PackageVersion[];
|
|
331
|
+
minor: PackageVersion[];
|
|
332
|
+
patch: PackageVersion[];
|
|
333
|
+
prerelease: PackageVersion[];
|
|
334
|
+
};
|
|
335
|
+
/** Timestamp of check */
|
|
336
|
+
checkedAt: Date;
|
|
337
|
+
/** Errors encountered */
|
|
338
|
+
errors: string[];
|
|
339
|
+
}
|
|
340
|
+
interface PackageJson {
|
|
341
|
+
name?: string;
|
|
342
|
+
version?: string;
|
|
343
|
+
dependencies?: Record<string, string>;
|
|
344
|
+
devDependencies?: Record<string, string>;
|
|
345
|
+
peerDependencies?: Record<string, string>;
|
|
346
|
+
optionalDependencies?: Record<string, string>;
|
|
347
|
+
}
|
|
348
|
+
interface NpmRegistryResponse {
|
|
349
|
+
'dist-tags': {
|
|
350
|
+
latest: string;
|
|
351
|
+
[key: string]: string;
|
|
352
|
+
};
|
|
353
|
+
versions: Record<string, unknown>;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Parse version string, removing range operators
|
|
357
|
+
*/
|
|
358
|
+
declare function parseVersion(version: string): string;
|
|
359
|
+
/**
|
|
360
|
+
* Compare two semver versions
|
|
361
|
+
*/
|
|
362
|
+
declare function compareVersions(current: string, latest: string): 'major' | 'minor' | 'patch' | 'prerelease' | 'none';
|
|
363
|
+
/**
|
|
364
|
+
* Main function to check package.json for updates
|
|
365
|
+
*
|
|
366
|
+
* @example
|
|
367
|
+
* // From URL
|
|
368
|
+
* const result = await checkPackage('https://raw.githubusercontent.com/user/repo/main/package.json');
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* // From object
|
|
372
|
+
* const result = await checkPackage({
|
|
373
|
+
* name: 'my-package',
|
|
374
|
+
* dependencies: { 'lodash': '^4.17.0' }
|
|
375
|
+
* });
|
|
376
|
+
*
|
|
377
|
+
* @example
|
|
378
|
+
* // In Node.js, read file first
|
|
379
|
+
* import fs from 'fs';
|
|
380
|
+
* const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf-8'));
|
|
381
|
+
* const result = await checkPackage(pkg);
|
|
382
|
+
*/
|
|
383
|
+
declare function checkPackage(source: string | PackageJson): Promise<PackageCheckResult>;
|
|
384
|
+
/**
|
|
385
|
+
* Format check result as human-readable string
|
|
386
|
+
*/
|
|
387
|
+
declare function formatPackageCheckResult(result: PackageCheckResult): string;
|
|
388
|
+
/**
|
|
389
|
+
* Generate ncu (npm-check-updates) command
|
|
390
|
+
*/
|
|
391
|
+
declare function generateNcuCommand(result: PackageCheckResult, options?: {
|
|
392
|
+
updateType?: 'major' | 'minor' | 'patch' | 'all';
|
|
393
|
+
interactive?: boolean;
|
|
394
|
+
upgrade?: boolean;
|
|
395
|
+
}): string;
|
|
396
|
+
/**
|
|
397
|
+
* Package check utilities for client-side usage
|
|
398
|
+
*/
|
|
399
|
+
declare const packageCheck: {
|
|
400
|
+
readonly check: typeof checkPackage;
|
|
401
|
+
readonly format: typeof formatPackageCheckResult;
|
|
402
|
+
readonly generateNcuCommand: typeof generateNcuCommand;
|
|
403
|
+
readonly parseVersion: typeof parseVersion;
|
|
404
|
+
readonly compareVersions: typeof compareVersions;
|
|
405
|
+
};
|
|
406
|
+
|
|
407
|
+
export { ApiUrlBuilder, type ApiUrlConfig, EventEmitter, type NpmRegistryResponse, type PackageCheckResult, type PackageJson, type PackageVersion, addDays, appEvents, camelToKebab, capitalize, capitalizeWords, checkPackage, copyToClipboard, createApiEndpoints, createApiUrlBuilder, createEmptyPaginationMeta, createErrorResponse, createEventEmitter, createSuccessResponse, endOfDay, formatDate, formatDateForInput, formatDateTime, formatDateTimeForInput, formatPackageCheckResult, formatRelativeTime, generateNcuCommand, getErrorMessage, getNextPage, getPrevPage, getResponseData, hasData, hasMorePages, isClipboardAvailable, isErrorResponse, isFuture, isPast, isSuccessResponse, isToday, kebabToCamel, packageCheck, readFromClipboard, slugify, slugifyUnique, startOfDay, truncate, truncateWords, unslugify };
|
|
@@ -359,6 +359,209 @@ var createErrorResponse = (message, statusCode = 400, error) => ({
|
|
|
359
359
|
statusCode
|
|
360
360
|
});
|
|
361
361
|
|
|
362
|
+
// src/client/utils/packageCheck.ts
|
|
363
|
+
function parseVersion(version) {
|
|
364
|
+
return version.replace(/[\^~>=<|*x\s]/g, "").split(" ")[0] || "0.0.0";
|
|
365
|
+
}
|
|
366
|
+
function compareVersions(current, latest) {
|
|
367
|
+
const currentClean = parseVersion(current);
|
|
368
|
+
const latestClean = parseVersion(latest);
|
|
369
|
+
if (currentClean === latestClean) return "none";
|
|
370
|
+
const [curMajor, curMinor, curPatch] = currentClean.split(".").map(Number);
|
|
371
|
+
const [latMajor, latMinor, latPatch] = latestClean.split(".").map(Number);
|
|
372
|
+
if (latest.includes("-")) return "prerelease";
|
|
373
|
+
if (latMajor > curMajor) return "major";
|
|
374
|
+
if (latMinor > curMinor) return "minor";
|
|
375
|
+
if (latPatch > curPatch) return "patch";
|
|
376
|
+
return "none";
|
|
377
|
+
}
|
|
378
|
+
async function fetchLatestVersion(packageName) {
|
|
379
|
+
try {
|
|
380
|
+
const encodedName = packageName.startsWith("@") ? `@${encodeURIComponent(packageName.slice(1))}` : encodeURIComponent(packageName);
|
|
381
|
+
const response = await fetch(`https://registry.npmjs.org/${encodedName}`);
|
|
382
|
+
if (!response.ok) {
|
|
383
|
+
return null;
|
|
384
|
+
}
|
|
385
|
+
const data = await response.json();
|
|
386
|
+
return data["dist-tags"]?.latest || null;
|
|
387
|
+
} catch {
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
async function fetchPackageJson(source) {
|
|
392
|
+
if (typeof source === "object") {
|
|
393
|
+
return source;
|
|
394
|
+
}
|
|
395
|
+
if (source.startsWith("http://") || source.startsWith("https://")) {
|
|
396
|
+
const response = await fetch(source);
|
|
397
|
+
if (!response.ok) {
|
|
398
|
+
throw new Error(`Failed to fetch package.json from ${source}: ${response.status}`);
|
|
399
|
+
}
|
|
400
|
+
return response.json();
|
|
401
|
+
}
|
|
402
|
+
throw new Error(
|
|
403
|
+
"File path support requires Node.js environment. Use URL or pass package.json object directly."
|
|
404
|
+
);
|
|
405
|
+
}
|
|
406
|
+
async function checkDependencyType(deps, type, errors) {
|
|
407
|
+
if (!deps) return [];
|
|
408
|
+
const results = [];
|
|
409
|
+
const entries = Object.entries(deps);
|
|
410
|
+
const concurrencyLimit = 10;
|
|
411
|
+
for (let i = 0; i < entries.length; i += concurrencyLimit) {
|
|
412
|
+
const batch = entries.slice(i, i + concurrencyLimit);
|
|
413
|
+
const batchResults = await Promise.all(
|
|
414
|
+
batch.map(async ([name, currentVersion]) => {
|
|
415
|
+
try {
|
|
416
|
+
const latest = await fetchLatestVersion(name);
|
|
417
|
+
if (!latest) {
|
|
418
|
+
errors.push(`Could not fetch latest version for ${name}`);
|
|
419
|
+
return {
|
|
420
|
+
name,
|
|
421
|
+
current: currentVersion,
|
|
422
|
+
latest: "unknown",
|
|
423
|
+
hasUpdate: false,
|
|
424
|
+
updateType: "none",
|
|
425
|
+
dependencyType: type
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
const updateType = compareVersions(currentVersion, latest);
|
|
429
|
+
return {
|
|
430
|
+
name,
|
|
431
|
+
current: currentVersion,
|
|
432
|
+
latest,
|
|
433
|
+
hasUpdate: updateType !== "none",
|
|
434
|
+
updateType,
|
|
435
|
+
dependencyType: type
|
|
436
|
+
};
|
|
437
|
+
} catch (err) {
|
|
438
|
+
errors.push(`Error checking ${name}: ${err}`);
|
|
439
|
+
return {
|
|
440
|
+
name,
|
|
441
|
+
current: currentVersion,
|
|
442
|
+
latest: "error",
|
|
443
|
+
hasUpdate: false,
|
|
444
|
+
updateType: "none",
|
|
445
|
+
dependencyType: type
|
|
446
|
+
};
|
|
447
|
+
}
|
|
448
|
+
})
|
|
449
|
+
);
|
|
450
|
+
results.push(...batchResults);
|
|
451
|
+
}
|
|
452
|
+
return results;
|
|
453
|
+
}
|
|
454
|
+
async function checkPackage(source) {
|
|
455
|
+
const errors = [];
|
|
456
|
+
let pkg;
|
|
457
|
+
try {
|
|
458
|
+
pkg = await fetchPackageJson(source);
|
|
459
|
+
} catch (err) {
|
|
460
|
+
throw new Error(`Failed to load package.json: ${err}`);
|
|
461
|
+
}
|
|
462
|
+
const [dependencies, devDependencies, peerDependencies, optionalDependencies] = await Promise.all([
|
|
463
|
+
checkDependencyType(pkg.dependencies, "dependencies", errors),
|
|
464
|
+
checkDependencyType(pkg.devDependencies, "devDependencies", errors),
|
|
465
|
+
checkDependencyType(pkg.peerDependencies, "peerDependencies", errors),
|
|
466
|
+
checkDependencyType(pkg.optionalDependencies, "optionalDependencies", errors)
|
|
467
|
+
]);
|
|
468
|
+
const allDeps = [...dependencies, ...devDependencies, ...peerDependencies, ...optionalDependencies];
|
|
469
|
+
return {
|
|
470
|
+
packageName: pkg.name || "unknown",
|
|
471
|
+
packageVersion: pkg.version || "0.0.0",
|
|
472
|
+
totalDependencies: allDeps.length,
|
|
473
|
+
outdatedCount: allDeps.filter((d) => d.hasUpdate).length,
|
|
474
|
+
dependencies: allDeps,
|
|
475
|
+
byType: {
|
|
476
|
+
dependencies,
|
|
477
|
+
devDependencies,
|
|
478
|
+
peerDependencies,
|
|
479
|
+
optionalDependencies
|
|
480
|
+
},
|
|
481
|
+
byUpdateType: {
|
|
482
|
+
major: allDeps.filter((d) => d.updateType === "major"),
|
|
483
|
+
minor: allDeps.filter((d) => d.updateType === "minor"),
|
|
484
|
+
patch: allDeps.filter((d) => d.updateType === "patch"),
|
|
485
|
+
prerelease: allDeps.filter((d) => d.updateType === "prerelease")
|
|
486
|
+
},
|
|
487
|
+
checkedAt: /* @__PURE__ */ new Date(),
|
|
488
|
+
errors
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
function formatPackageCheckResult(result) {
|
|
492
|
+
const lines = [];
|
|
493
|
+
lines.push(`\u{1F4E6} Package: ${result.packageName}@${result.packageVersion}`);
|
|
494
|
+
lines.push(`\u{1F4C5} Checked: ${result.checkedAt.toISOString()}`);
|
|
495
|
+
lines.push(`\u{1F4CA} Total: ${result.totalDependencies} | Outdated: ${result.outdatedCount}`);
|
|
496
|
+
lines.push("");
|
|
497
|
+
if (result.byUpdateType.major.length > 0) {
|
|
498
|
+
lines.push("\u{1F534} MAJOR Updates:");
|
|
499
|
+
result.byUpdateType.major.forEach((d) => {
|
|
500
|
+
lines.push(` ${d.name}: ${d.current} \u2192 ${d.latest}`);
|
|
501
|
+
});
|
|
502
|
+
lines.push("");
|
|
503
|
+
}
|
|
504
|
+
if (result.byUpdateType.minor.length > 0) {
|
|
505
|
+
lines.push("\u{1F7E1} MINOR Updates:");
|
|
506
|
+
result.byUpdateType.minor.forEach((d) => {
|
|
507
|
+
lines.push(` ${d.name}: ${d.current} \u2192 ${d.latest}`);
|
|
508
|
+
});
|
|
509
|
+
lines.push("");
|
|
510
|
+
}
|
|
511
|
+
if (result.byUpdateType.patch.length > 0) {
|
|
512
|
+
lines.push("\u{1F7E2} PATCH Updates:");
|
|
513
|
+
result.byUpdateType.patch.forEach((d) => {
|
|
514
|
+
lines.push(` ${d.name}: ${d.current} \u2192 ${d.latest}`);
|
|
515
|
+
});
|
|
516
|
+
lines.push("");
|
|
517
|
+
}
|
|
518
|
+
if (result.errors.length > 0) {
|
|
519
|
+
lines.push("\u26A0\uFE0F Errors:");
|
|
520
|
+
result.errors.forEach((e) => {
|
|
521
|
+
lines.push(` ${e}`);
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
return lines.join("\n");
|
|
525
|
+
}
|
|
526
|
+
function generateNcuCommand(result, options = {}) {
|
|
527
|
+
const { updateType = "all", interactive = false, upgrade = false } = options;
|
|
528
|
+
let packages = [];
|
|
529
|
+
switch (updateType) {
|
|
530
|
+
case "major":
|
|
531
|
+
packages = result.byUpdateType.major.map((d) => d.name);
|
|
532
|
+
break;
|
|
533
|
+
case "minor":
|
|
534
|
+
packages = result.byUpdateType.minor.map((d) => d.name);
|
|
535
|
+
break;
|
|
536
|
+
case "patch":
|
|
537
|
+
packages = result.byUpdateType.patch.map((d) => d.name);
|
|
538
|
+
break;
|
|
539
|
+
default:
|
|
540
|
+
packages = result.dependencies.filter((d) => d.hasUpdate).map((d) => d.name);
|
|
541
|
+
}
|
|
542
|
+
if (packages.length === 0) {
|
|
543
|
+
return "# No updates available";
|
|
544
|
+
}
|
|
545
|
+
let cmd = "npx npm-check-updates";
|
|
546
|
+
if (packages.length > 0 && packages.length < result.dependencies.length) {
|
|
547
|
+
cmd += ` --filter "${packages.join(",")}"`;
|
|
548
|
+
}
|
|
549
|
+
if (interactive) {
|
|
550
|
+
cmd += " --interactive";
|
|
551
|
+
}
|
|
552
|
+
if (upgrade) {
|
|
553
|
+
cmd += " --upgrade";
|
|
554
|
+
}
|
|
555
|
+
return cmd;
|
|
556
|
+
}
|
|
557
|
+
var packageCheck = {
|
|
558
|
+
check: checkPackage,
|
|
559
|
+
format: formatPackageCheckResult,
|
|
560
|
+
generateNcuCommand,
|
|
561
|
+
parseVersion,
|
|
562
|
+
compareVersions
|
|
563
|
+
};
|
|
564
|
+
|
|
362
565
|
exports.ApiUrlBuilder = ApiUrlBuilder;
|
|
363
566
|
exports.EventEmitter = EventEmitter;
|
|
364
567
|
exports.addDays = addDays;
|
|
@@ -366,6 +569,7 @@ exports.appEvents = appEvents;
|
|
|
366
569
|
exports.camelToKebab = camelToKebab;
|
|
367
570
|
exports.capitalize = capitalize;
|
|
368
571
|
exports.capitalizeWords = capitalizeWords;
|
|
572
|
+
exports.checkPackage = checkPackage;
|
|
369
573
|
exports.copyToClipboard = copyToClipboard;
|
|
370
574
|
exports.createApiEndpoints = createApiEndpoints;
|
|
371
575
|
exports.createApiUrlBuilder = createApiUrlBuilder;
|
|
@@ -378,7 +582,9 @@ exports.formatDate = formatDate;
|
|
|
378
582
|
exports.formatDateForInput = formatDateForInput;
|
|
379
583
|
exports.formatDateTime = formatDateTime;
|
|
380
584
|
exports.formatDateTimeForInput = formatDateTimeForInput;
|
|
585
|
+
exports.formatPackageCheckResult = formatPackageCheckResult;
|
|
381
586
|
exports.formatRelativeTime = formatRelativeTime;
|
|
587
|
+
exports.generateNcuCommand = generateNcuCommand;
|
|
382
588
|
exports.getErrorMessage = getErrorMessage;
|
|
383
589
|
exports.getNextPage = getNextPage;
|
|
384
590
|
exports.getPrevPage = getPrevPage;
|
|
@@ -392,6 +598,7 @@ exports.isPast = isPast;
|
|
|
392
598
|
exports.isSuccessResponse = isSuccessResponse;
|
|
393
599
|
exports.isToday = isToday;
|
|
394
600
|
exports.kebabToCamel = kebabToCamel;
|
|
601
|
+
exports.packageCheck = packageCheck;
|
|
395
602
|
exports.readFromClipboard = readFromClipboard;
|
|
396
603
|
exports.slugify = slugify;
|
|
397
604
|
exports.slugifyUnique = slugifyUnique;
|