https://github.com/playform/npmsummary
https://github.com/playform/npmsummary
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/playform/npmsummary
- Owner: PlayForm
- License: cc0-1.0
- Created: 2024-07-31T00:00:23.000Z (over 1 year ago)
- Default Branch: Current
- Last Pushed: 2024-10-24T01:15:40.000Z (over 1 year ago)
- Last Synced: 2024-10-24T16:28:00.546Z (over 1 year ago)
- Language: TypeScript
- Size: 60.5 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 🗣️ [Summary]
[Summary] is a powerful TypeScript library designed for efficient Git repository
analysis and summarization. It offers both sequential and parallel processing
capabilities, along with flexible file filtering options, all while leveraging
the [@pieces.app/pieces-os-client] SDK for enhanced functionality. Additionally,
[Summary] communicates with a Rust SDK via WebSockets for improved performance
and extended capabilities.
[Summary] will generate a comprehensive summary of all commits and tags between
the first and the last commit in your Git repository.
```typescript
import { Summary } from "@playform/summary";
new Summary().generateSummary({ Parallel: true }).then((Output) => {
console.log(Output);
});
```
## Feature
- Customizable file pattern matching
- Diff generation between Git tags
- Directory traversal and file filtering
- Exclusion of specified files or directories
- Git repository analysis
- Integration with [Pieces OS] via [@pieces.app/pieces-os-client] SDK
- Parallel and sequential processing modes
- WebSocket communication with Rust SDK for enhanced performance
- Support for multiple programming languages and file types
- Configurable logging levels
- Efficient handling of large repositories
- Asynchronous processing using Tokio runtime
- Flexible command-line interface using Clap
- Concurrent hash map implementation for improved performance
- Advanced regex-based file filtering and omission
- Customizable diff options for fine-grained control
- Integration with external AI services for code analysis (via Pieces OS)
## [Pieces OS] Integration and Rust SDK Communication
The [Summary] library integrates with [Pieces OS] through the [@pieces.app/pieces-os-client]
SDK, allowing it to:
- Generate comprehensive diff logs and release notes automatically
- Provide AI-driven code analysis and insights
- Offer improved context-aware processing of repository changes
- Seamlessly interact with other [Pieces OS]-compatible development tools
Furthermore, [Summary] establishes a WebSocket connection with the Summary Rust
SDK, enabling:
- Real-time, high-performance data processing
- Efficient handling of large repositories and complex operations
- Access to Rust's powerful concurrency and memory safety features
- Seamless integration of Rust-based algorithms and utilities
By leveraging both [Pieces OS] and the Rust SDK, [Summary] can tap into a broader
ecosystem of development tools and services, significantly expanding its capabilities
beyond basic file processing while ensuring optimal performance.
## Installation 🚀
```sh
npm install @playform/summary @pieces.app/pieces-os-client
```
## 🛠️ Usage
Here's a basic example of how to use the Summary library:
```typescript
import { Summary, SummaryOptions } from "@playform/summary";
import { PiecesApi } from "@pieces.app/pieces-os-client";
const summary = new Summary(new PiecesApi());
summary
.generateSummary({
Parallel: true,
Root: ".",
Exclude: ["node_modules"],
Pattern: ".git",
Omit: ["Documentation"],
})
.then((Output) => {
console.log(Output);
});
```
## Options
The [Summary] library can be used with various options:
### Exclude
Exclude certain files or directories.
```typescript
{
Exclude: ["node_modules"],
}
```
### Omit
Specify regex Patterns to Omit files from processing.
```typescript
{
Omit: [
/(?i)documentation/,
/(?i)target/,
/(?i)changelog\.md$/,
/(?i)summary\.md$/,
],
}
```
### Parallel
Run processing in Parallel.
```typescript
{
Parallel: true,
}
```
### Pattern
Specify a custom Pattern for matching.
```typescript
{
Pattern: ".git",
}
```
### Root
Set the current working directory to a different folder.
```typescript
{
Root: "/path/to/repository",
}
```
For [Pieces OS] integration, refer to the [@pieces.app/pieces-os-client] documentation
for specific configuration options.
## Examples
Analyze the current directory:
```typescript
new Summary(new PiecesApi()).generateSummary().then((Output) => {
console.log(Output);
});
```
Analyze a specific directory in Parallel:
```typescript
new Summary(new PiecesApi())
.generateSummary({
Parallel: true,
Root: "D:\\Developer",
})
.then((Output) => {
console.log(Output);
});
```
Exclude additional directories:
```typescript
new Summary(new PiecesApi())
.generateSummary({
Parallel: true,
Exclude: ["node_modules", "target", "dist", "vendor"],
})
.then((Output) => {
console.log(Output);
});
```
Omit specific file Patterns:
```typescript
new Summary(new PiecesApi())
.generateSummary({
Parallel: true,
Omit: [/\.md$/, /\.txt$/],
})
.then((Output) => {
console.log(Output);
});
```
## Dependencies
[Summary] relies on several npm packages to provide its functionality:
- @pieces.app/pieces-os-client - For integration with Pieces OS
- simple-git - For Git repository operations
- glob - For file Pattern matching
- diff - For generating diffs between files
- worker-threads - For Parallel processing
## Changelog
See [`CHANGELOG.md`](CHANGELOG.md) for a history of changes to this library.
[Summary]: HTTPS://www.npmjs.com/package/@playform/summary
[Pieces OS]: HTTPS://pieces.app
[@pieces.app/pieces-os-client]:
HTTPS://www.npmjs.com/package/@pieces.app/pieces-os-client