@exyconn/common 1.0.0 → 2.0.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.
Files changed (46) hide show
  1. package/README.md +121 -36
  2. package/dist/client/index.d.mts +2 -2
  3. package/dist/client/index.d.ts +2 -2
  4. package/dist/client/index.js +2330 -176
  5. package/dist/client/index.js.map +1 -1
  6. package/dist/client/index.mjs +2284 -178
  7. package/dist/client/index.mjs.map +1 -1
  8. package/dist/client/utils/index.d.mts +123 -1
  9. package/dist/client/utils/index.d.ts +123 -1
  10. package/dist/client/utils/index.js +207 -0
  11. package/dist/client/utils/index.js.map +1 -1
  12. package/dist/client/utils/index.mjs +204 -1
  13. package/dist/client/utils/index.mjs.map +1 -1
  14. package/dist/index-BLltj-zN.d.ts +1236 -0
  15. package/dist/index-CIUdLBjA.d.mts +1236 -0
  16. package/dist/{index-iTKxFa78.d.ts → index-DEzgM15j.d.ts} +10 -2
  17. package/dist/{index-ClWtDfwk.d.ts → index-DNFVgQx8.d.ts} +544 -2
  18. package/dist/{index-CcrANHAQ.d.mts → index-DbV04Dx8.d.mts} +10 -2
  19. package/dist/{index-DSW6JfD-.d.mts → index-DfqEP6Oe.d.mts} +544 -2
  20. package/dist/index.d.mts +582 -7
  21. package/dist/index.d.ts +582 -7
  22. package/dist/index.js +3428 -221
  23. package/dist/index.js.map +1 -1
  24. package/dist/index.mjs +3430 -223
  25. package/dist/index.mjs.map +1 -1
  26. package/dist/server/index.d.mts +1 -1
  27. package/dist/server/index.d.ts +1 -1
  28. package/dist/server/index.js +197 -0
  29. package/dist/server/index.js.map +1 -1
  30. package/dist/server/index.mjs +194 -2
  31. package/dist/server/index.mjs.map +1 -1
  32. package/dist/server/utils/index.d.mts +73 -1
  33. package/dist/server/utils/index.d.ts +73 -1
  34. package/dist/server/utils/index.js +199 -0
  35. package/dist/server/utils/index.js.map +1 -1
  36. package/dist/server/utils/index.mjs +195 -1
  37. package/dist/server/utils/index.mjs.map +1 -1
  38. package/dist/shared/index.d.mts +1 -1
  39. package/dist/shared/index.d.ts +1 -1
  40. package/dist/shared/index.js +296 -0
  41. package/dist/shared/index.js.map +1 -1
  42. package/dist/shared/index.mjs +274 -1
  43. package/dist/shared/index.mjs.map +1 -1
  44. package/package.json +9 -2
  45. package/dist/index-BNdT-2X4.d.ts +0 -229
  46. 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
- export { ApiUrlBuilder, type ApiUrlConfig, EventEmitter, addDays, appEvents, camelToKebab, capitalize, capitalizeWords, copyToClipboard, createApiEndpoints, createApiUrlBuilder, createEmptyPaginationMeta, createErrorResponse, createEventEmitter, createSuccessResponse, endOfDay, formatDate, formatDateForInput, formatDateTime, formatDateTimeForInput, formatRelativeTime, getErrorMessage, getNextPage, getPrevPage, getResponseData, hasData, hasMorePages, isClipboardAvailable, isErrorResponse, isFuture, isPast, isSuccessResponse, isToday, kebabToCamel, readFromClipboard, slugify, slugifyUnique, startOfDay, truncate, truncateWords, unslugify };
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
- export { ApiUrlBuilder, type ApiUrlConfig, EventEmitter, addDays, appEvents, camelToKebab, capitalize, capitalizeWords, copyToClipboard, createApiEndpoints, createApiUrlBuilder, createEmptyPaginationMeta, createErrorResponse, createEventEmitter, createSuccessResponse, endOfDay, formatDate, formatDateForInput, formatDateTime, formatDateTimeForInput, formatRelativeTime, getErrorMessage, getNextPage, getPrevPage, getResponseData, hasData, hasMorePages, isClipboardAvailable, isErrorResponse, isFuture, isPast, isSuccessResponse, isToday, kebabToCamel, readFromClipboard, slugify, slugifyUnique, startOfDay, truncate, truncateWords, unslugify };
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;