UNPKG

zephyr-edge-contract

Version:

Edge contract for Zephyr

247 lines (177 loc) • 5.99 kB
# 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.