zephyr-edge-contract
Version:
Edge contract for Zephyr
247 lines (177 loc) • 5.99 kB
Markdown
# Zephyr Edge Contract (Internal)
<div align="center">
[Zephyr Cloud](https://zephyr-cloud.io) | [Zephyr Docs](https://docs.zephyr-cloud.io) | [Discord](https://zephyr-cloud.io/discord) | [Twitter](https://x.com/ZephyrCloudIO) | [LinkedIn](https://www.linkedin.com/company/zephyr-cloud/)
<hr/>
<img src="https://cdn.prod.website-files.com/669061ee3adb95b628c3acda/66981c766e352fe1f57191e2_Opengraph-zephyr.png" alt="Zephyr Logo" />
</div>
**Internal Package** - A collection of API types, contracts, and reusable functions for Zephyr build plugins. This package defines the standardized interfaces and utilities used across the Zephyr ecosystem.
> **Note**: This is an internal package used by other Zephyr plugins. It is not intended for direct use by end users.
## Overview
The Zephyr Edge Contract package provides:
- **Type Definitions**: TypeScript interfaces and types for API communication
- **Contracts**: Standardized contracts for plugin interactions
- **Utilities**: Reusable utility functions for common operations
- **Constants**: Shared constants and configuration values
- **Validation**: Schema validation and type checking utilities
## Package Structure
### API Contract Negotiation (`lib/api-contract-negotiation/`)
- Defines API versioning and compatibility contracts
- Handles contract negotiation between plugins and services
- Ensures backward compatibility across versions
### Edge API (`lib/edge-api/`)
- Type definitions for edge API communication
- Request/response schemas for deployment operations
- Environment and publishing request interfaces
### Plugin Options (`lib/plugin-options/`)
- Standardized plugin configuration interfaces
- Common options shared across Webpack/Rspack plugins
- Type-safe configuration validation
### Promise Utilities (`lib/promise/`)
- Promise-based utility functions and helpers
- Deferred promise implementations
- Lazy loading and tuple promise utilities
- Concurrency control with `forEachLimit`
### String Utilities (`lib/string/`)
- String manipulation and formatting utilities
- ANSI color code stripping functions
- String parsing and validation helpers
### General Utilities (`lib/utils/`)
- Application UID generation
- Snapshot ID creation
- Safe JSON parsing utilities
- Common helper functions
### Zephyr API (`lib/ze-api/`)
- API interfaces for Zephyr Cloud services
- Application listing and version management
- Dependency graph and package.json handling
## Type Definitions
### Build Stats Contract
```typescript
interface ZephyrBuildStats {
bundler: string;
buildTime: number;
assets: AssetInfo[];
chunks: ChunkInfo[];
modules: ModuleInfo[];
dependencies: DependencyInfo[];
}
```
### Edge Contract
```typescript
interface ZephyrEdgeContract {
version: string;
capabilities: string[];
endpoints: EdgeEndpoints;
authentication: AuthConfig;
}
```
### Plugin Configuration
```typescript
interface ZephyrPluginOptions {
deploy?: boolean;
environment?: string;
metadata?: Record<string, any>;
buildContext?: BuildContext;
}
```
## Utility Functions
### Promise Utilities
```typescript
// Deferred promise implementation
const deferred = createDeferred<T>();
// Lazy promise loading
const lazyPromise = createLazyPromise(() => expensiveOperation());
// Controlled concurrency
await forEachLimit(items, 3, async (item) => processItem(item));
```
### String Utilities
```typescript
// Strip ANSI color codes
const cleanText = stripAnsi(coloredText);
// String validation and parsing
const isValid = validateString(input, schema);
```
### ID Generation
```typescript
// Generate application UID
const appUid = createApplicationUid(packageName, version);
// Create snapshot ID
const snapshotId = createSnapshotId(buildInfo);
```
## Schema Validation
The package includes JSON schema definitions for:
- **Dependency Schemas**: Validation for Zephyr dependencies
- **Build Context**: Build-time context validation
- **API Requests**: Request/response validation
- **Plugin Options**: Configuration schema validation
## Constants and Enums
```typescript
// API versions
export const API_VERSIONS = {
V1: 'v1',
V2: 'v2',
CURRENT: 'v2',
} as const;
// Build environments
export const ENVIRONMENTS = {
DEVELOPMENT: 'development',
STAGING: 'staging',
PRODUCTION: 'production',
} as const;
// Plugin types
export const PLUGIN_TYPES = {
WEBPACK: 'webpack',
RSPACK: 'rspack',
VITE: 'vite',
ROLLUP: 'rollup',
} as const;
```
## Error Handling
Standardized error types and handling:
```typescript
interface ZephyrError {
code: string;
message: string;
details?: Record<string, any>;
stack?: string;
}
// Error creation utilities
const error = createZephyrError('INVALID_CONFIG', 'Configuration is invalid');
```
## Usage by Plugins
Internal packages use this contract for consistency:
```typescript
import {
ZephyrPluginOptions,
createApplicationUid,
stripAnsi,
forEachLimit,
} from 'zephyr-edge-contract';
// Type-safe plugin configuration
function createPlugin(options: ZephyrPluginOptions) {
// Implementation
}
// Utility usage
const appId = createApplicationUid('my-app', '1.0.0');
const cleanOutput = stripAnsi(buildOutput);
```
## Development
For internal development and testing:
```bash
# Build the package
npm run build
# Run tests
npm run test
# Type checking
npm run type-check
```
## API Compatibility
The package maintains strict API compatibility through:
- **Semantic Versioning**: Breaking changes only in major versions
- **Contract Negotiation**: Runtime compatibility checking
- **Schema Evolution**: Backward-compatible schema updates
- **Type Safety**: Compile-time type checking
## Contributing
This is an internal package. Contributions should be made through the main Zephyr plugins repository. Please read our [contributing guidelines](../../CONTRIBUTING.md) for more information.
## License
Licensed under the Apache-2.0 License. See [LICENSE](LICENSE) for more information.