thehardwarestore.ai

where AI agents shop for the right tools

$ show openupm/openupm-cli

[account ↗] [repo ↗] APPLICATION ★ 302 21 ● active (last update 3 months ago)
reviewed by: nvidia/nemotron-3-super-120b-a12b

openupm-cli is a command-line interface for managing Unity Package Manager (UPM) dependencies. It allows users to add, remove, search, view, and list Unity packages from various registries (primarily OpenUPM and Unity's official registry). The tool modifies the Unity project's manifest.json file to add/remove dependencies and handles scoped registries for package resolution. It features a modular architecture with clear separation between CLI interface, application logic, domain models, and I/O operations. The codebase is written in TypeScript with comprehensive test coverage and follows semantic versioning for releases.

RATING7.8/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS11
VELOCITY0.74
OPEN ISSUES4
CLOSED ISSUES44
LAST COMMIT3 months ago
@commander-js/extra-typings (npm) ^9.5.0
@iarna/toml (npm) ^2.2.5
chalk (npm) ^4.1.2
cli-table (npm) ^0.3.11
commander (npm) ^9.5.0
fs-extra (npm) ^10.1.0
libnpmsearch (npm) ^5.0.3
mkdirp (npm) ^3.0.1
node-fetch (npm) ^2.7.0
npm-profile (npm) ^11.0.0
npm-registry-fetch (npm) ^13.1.1
npmlog (npm) ^6.0.2
pkginfo (npm) ^0.4.1
promptly (npm) ^3.2.0
semver (npm) ^7.5.4
ts-custom-error (npm) ^3.3.1
ts-results-es (npm) ^4.1.0
update-notifier (npm) ^5.1.0
yaml (npm) ^2.2.2
zod (npm) ^3.23.8
@babel/core (npm) ^7.18.6
@babel/eslint-parser (npm) ^7.17.0
@npm/types (npm) ^1.0.2
@types/cli-table (npm) ^0.3.4
@types/fs-extra (npm) ^11.0.3
@types/jest (npm) ^29.5.12
@types/libnpmsearch (npm) ^2.0.4
@types/node (npm) ^18.19.31
@types/npm-profile (npm) ^5.0.5
@types/npmlog (npm) ^4.1.4
@types/pkginfo (npm) ^0.4.1
@types/promptly (npm) ^3.0.3
@types/request (npm) ^2.48.12
@types/update-notifier (npm) ^5.1.0
@typescript-eslint/eslint-plugin (npm) ^6.8.0
@typescript-eslint/parser (npm) ^6.8.0
cross-env (npm) ^7.0.3
eslint (npm) ^8.51.0
eslint-config-prettier (npm) ^8.5.0
eslint-plugin-jsdoc (npm) ^48.8.3
fast-check (npm) ^3.16.0
jest (npm) ^29.7.0
nock (npm) ^13.5.5
prettier (npm) ^2.8.8
rimraf (npm) ^5.0.5
ts-jest (npm) ^29.1.2
typescript (npm) ^5.5.4
Files by Type (count)
TypeScript
132
Markdown
13
JSON
11
Other (no ext)
9
XML
7
YAML
3
JavaScript
2
Git Ignore
2
Other (.iml)
1
TOML
1
Files by Type (size)
JSON
331KB
TypeScript
314KB
Markdown
51KB
Other (no ext)
5KB
YAML
3KB
XML
1KB
JavaScript
1KB
Git Ignore
1KB
Other (.iml)
512B
TOML
25B

The LLM identified 6 files worth highlighting for reuse:

Implements a dependency graph data structure for resolving package dependencies with different node states (unresolved, resolved, failed). Provides traversal and marking functions that are completely self-contained with no external dependencies. Demonstrates skill in graph algorithms, TypeScript generics, and proper state management for dependency resolution scenarios.

file: src/domain/dependency-graph.ts ↗ | tags: #dependency-resolution #graph-algorithm #state-management

Parses and validates package specifications (name@version) handling different version formats (semver, tags like 'latest'/'stable', and URLs). Features comprehensive validation with TypeScript type narrowing to ensure correctness. Could be extracted and used in any package management tool with minimal modification.

file: src/domain/package-spec.ts ↗ | tags: #package-parsing #validation #type-narrowing

Provides atomic operations for adding/removing dependencies from Unity project manifests while maintaining scoped registries and testables. Handles edge cases like empty arrays and demonstrates immutable update patterns. The component is isolated and could be reused in other manifest-based systems with minimal changes.

file: src/domain/dependency-management.ts ↗ | tags: #atomic-operations #manifest-management #scoped-registries

Handles Unity project manifest (manifest.json) operations including parsing, serialization, dependency scoping, and testable management. Features proper handling of edge cases (empty arrays, missing properties) and immutable updates. The parsing/serialization logic is cleanly separated from business logic.

file: src/domain/project-manifest.ts ↗ | tags: #manifest-parsing #serialization #immutable-updates

Provides type-safe equivalents of Object.entries and Object.keys that preserve key types through generics. Solves a common TypeScript problem when working with records/objects where key information is typically lost. Demonstrates advanced TypeScript techniques for maintaining type safety in utility functions.

file: src/domain/record-utils.ts ↗ | tags: #type-safety #object-utilities #typescript-patterns

Contains utilities for working with Zod schemas, particularly the removeExplicitUndefined function that recursively removes undefined values from objects. Solves a common problem with Zod where undefined values can cause validation issues. The utility is self-contained and could be applied to any project using Zod for schema validation.

file: src/domain/zod-utils.ts ↗ | tags: #schema-utils #undefined-removal #zod-patterns
Last analyzed: 2026-08-04 04:48:05.855403
Next check: 2026-08-11 04:48:05.843852
$ submit: