Add comprehensive README with instructions and information

This commit is contained in:
hitchhiker 2025-04-16 22:06:02 +02:00
parent 05857a7e3f
commit 37d38c3b05

175
README.md Normal file
View File

@ -0,0 +1,175 @@
# G1 TypeScript Common Packages
This monorepo contains common TypeScript packages used across Generation One projects.
## Repository Structure
```
g1-ts-common-packages/
├── packages/ # All packages are stored here
│ ├── sse-client/ # Server-Sent Events client package
│ └── [future-packages]/ # Additional packages will be added here
├── scripts/ # Utility scripts for the repository
├── docs/ # Documentation
└── .github/workflows/ # CI/CD workflows
```
## Available Packages
### SSE Client (`@g1/sse-client`)
A custom Server-Sent Events (SSE) client that supports headers and bypasses certificate issues.
- Supports custom headers for SSE connections
- Handles reconnection with exponential backoff
- Works in both browser and Node.js environments
- Provides connection management utilities
## Getting Started
### Prerequisites
- Node.js 16+
- pnpm (recommended) or npm
### Installation
Clone the repository:
```bash
git clone https://git.generation.one/GenerationOne/g1-ts-common-packages.git
cd g1-ts-common-packages
```
Install dependencies:
```bash
pnpm install
```
Build all packages:
```bash
pnpm build
```
## Using the Packages
### In Another Project
Add the package to your project:
```bash
# Configure the Gitea registry
echo "@g1:registry=https://git.generation.one/api/packages/GenerationOne/npm/" > .npmrc
echo "//git.generation.one/api/packages/GenerationOne/npm/:_authToken=${GITEA_TOKEN}" >> .npmrc
# Install the package
pnpm add @g1/sse-client
```
### Example Usage
```typescript
import { SSEClient } from '@g1/sse-client';
// Create a new SSE client
const client = new SSEClient('https://api.example.com/events', {
headers: {
'Authorization': 'Bearer your-token'
}
});
// Connect to the SSE endpoint
client.connect();
// Add event listeners
client.on('message', (event) => {
console.log('Received message:', event.data);
});
// Close the connection when done
client.close();
```
## Development
### Adding a New Package
1. Create a new directory in the `packages` folder
2. Initialize the package with `pnpm init`
3. Set the package name with the `@g1` scope (e.g., `@g1/your-package-name`)
4. Set the initial version to `0.2.0` (our standard starting version)
5. Add your code and build configuration
### Building Packages
To build a specific package:
```bash
cd packages/package-name
pnpm build
```
To build all packages:
```bash
pnpm -r build
```
### Testing Packages
To run tests for a specific package:
```bash
cd packages/package-name
pnpm test
```
To test all packages:
```bash
pnpm -r test
```
## Publishing Packages
### Prerequisites
- Gitea access token with `packages:write` permission
- Access to the Generation One Gitea repository
### Publishing a Package
Use the provided script:
```bash
# Set your Gitea token
export GITEA_TOKEN="your-token-here"
# Or create a .gitea-token file in the root directory
# Publish with a patch version bump
./scripts/publish-package.sh packages/sse-client patch
# Publish with a specific version
./scripts/publish-package.sh packages/sse-client version:0.3.0
# Publish without changing the version
./scripts/publish-package.sh packages/sse-client none
```
For more detailed publishing instructions, see [docs/DEPLOY_KEYS.md](docs/DEPLOY_KEYS.md).
## CI/CD
This repository includes GitHub Actions workflows for automated testing and publishing:
- **Publish Package**: Publishes a package to the Gitea registry
To use the workflows, you need to set up the following secrets in your GitHub repository:
- `GITEA_TOKEN`: Your Gitea access token
- `GITEA_DEPLOY_KEY`: SSH deploy key for the repository
## License
MIT