Files
odiinnn a21ea39c36 Initialize TypeScript library for Telegram Web App wallet integration
- Added configuration files: .eslintrc.js, .gitignore, .npmrc, .prettierrc, and multiple tsconfig files for different module systems.
- Created package.json with dependencies and scripts for building, testing, and publishing.
- Implemented core functionality in src/ directory, including wallet management, encryption, and storage handling.
- Added README.md for documentation on installation, usage, and development setup.
- Introduced initial types and constants for better type safety and code organization.
2025-08-28 13:13:57 +03:00

164 lines
3.4 KiB
Markdown

# @varan-wallet/varan-connect
A lightweight TypeScript library for Telegram Web App wallet integration with support for both CommonJS and ES modules.
## Installation
```bash
npm install @varan-wallet/varan-connect
# or
pnpm add @varan-wallet/varan-connect
# or
yarn add @varan-wallet/varan-connect
```
## Usage
### ES Modules (Recommended)
```typescript
import { injectVaranWallet } from '@varan-wallet/varan-connect';
import WebApp from '@twa-dev/sdk';
// Inject the Varan wallet into the window object
injectVaranWallet(WebApp);
// The wallet is now available at window.injectedWeb3.varan
const varanWallet = window.injectedWeb3?.varan;
if (varanWallet) {
// Connect to wallet
const connection = await varanWallet.connect();
// Get accounts
const accounts = await connection.accounts.get();
// Sign transactions
const signer = connection.signer;
const signature = await signer.signRaw({
address: '0x123...',
data: '0x456...'
});
}
```
### CommonJS
```javascript
const { injectVaranWallet } = require('@varan-wallet/varan-connect');
const WebApp = require('@twa-dev/sdk').default;
// Inject the Varan wallet
injectVaranWallet(WebApp);
// Use the injected wallet
const varanWallet = window.injectedWeb3?.varan;
```
## Module Support
This library supports both module systems:
- **ES Modules (ESM)**: Modern JavaScript modules using `import`/`export`
- **CommonJS (CJS)**: Node.js traditional modules using `require`/`module.exports`
The library automatically detects which module system you're using and provides the appropriate format.
## API
### `injectVaranWallet(webApp: WebApp): void`
Injects the Varan wallet into the window object for Telegram Web App integration.
**Parameters:**
- `webApp`: The Telegram Web App instance from `@twa-dev/sdk`
**Returns:** `void`
## Types
The library exports comprehensive TypeScript types:
- `WebApp` - Telegram Web App interface from `@twa-dev/sdk`
- `InjectedWindow` - Extended window interface with injected wallet from `@polkadot/extension-inject`
- `ConnectRequest`, `SignTransactionRequest` - Request interfaces
- `ConnectResult`, `SignTransactionResult` - Result interfaces
- `InjectionConfig` - Configuration options for wallet injection
## Dependencies
**Runtime Dependencies:**
- `@twa-dev/sdk` - Telegram Web App SDK
**Development Dependencies:**
- `@polkadot/extension-inject` - Polkadot extension injection types
- `@polkadot/types` - Polkadot types
- TypeScript for compilation
- ESLint for code quality
- Prettier for code formatting
- Jest for testing
## Build Outputs
The library provides multiple build outputs:
- `dist/esm/` - ES Modules build (`.mjs` compatible)
- `dist/cjs/` - CommonJS build (Node.js compatible)
- `dist/types/` - TypeScript type definitions
## Development
### Setup
```bash
pnpm install
```
### Build
```bash
pnpm run build # Build all formats
pnpm run build:esm # Build ES modules only
pnpm run build:cjs # Build CommonJS only
pnpm run build:types # Build types only
```
### Development mode
```bash
pnpm run dev
```
### Testing
```bash
pnpm test
```
### Linting
```bash
pnpm run lint
```
### Formatting
```bash
pnpm run format
```
### Publishing
```bash
# Publish with automatic version bumping
pnpm run publish:patch # 1.0.0 -> 1.0.1
pnpm run publish:minor # 1.0.0 -> 1.1.0
pnpm run publish:major # 1.0.0 -> 2.0.0
# Manual publish (after building)
pnpm publish
```
## License
MIT