scriptable-abstract
Version:
Abstract class definitions and type structures for Scriptable-iOS, providing the foundation for building mock implementations and type-safe Scriptable development tools.
118 lines (85 loc) • 2.95 kB
Markdown
# Scriptable Abstract
Abstract class definitions and type structures for Scriptable-iOS, providing the foundation for building mock implementations and type-safe Scriptable development tools.
## Features
- Complete type definitions extracted from /scriptable-ios
- Abstract class implementations with structural information
- Automatic code generation for class structures
- Used as the foundation for scriptable-mocks and other tools
- ESM and CommonJS module support
- Version tracking of source type definitions
## Installation
```bash
npm install scriptable-abstract
# or
pnpm add scriptable-abstract
```
## Usage
### Building Mock Implementations
```typescript
import { AbsAlert } from 'scriptable-abstract';
class MockAlert extends AbsAlert {
private _title: string = '';
private _message: string = '';
get title(): string {
return this._title;
}
set title(value: string) {
this._title = value;
}
get message(): string {
return this._message;
}
set message(value: string) {
this._message = value;
}
async present(): Promise<number> {
// Mock implementation
return 0;
}
}
```
### Using Generic Types
```typescript
import { AbsCallbackURL } from 'scriptable-abstract';
// With type parameter for shortcuts
const shortcutURL = new AbsCallbackURL<`shortcuts://x-callback-url/${string}`>();
```
### Project Structure
```
scriptable-abstract/
├── src/
│ ├── core/ # Core parsing and generation
│ ├── generators/ # Structure generators
│ └── types/ # Type definitions
├── generated/ # Generated class structures
└── dist/ # Compiled output
```
### Scripts
- `pnpm generate` - Generate abstract structures
- `pnpm build` - Build the project
- `pnpm clean` - Clean generated files
- `pnpm format` - Format code
- `pnpm lint` - Lint code
## License
MIT
## Version Compatibility
This package uses semantic versioning independently from `/scriptable-ios`. Each version specifies the compatible version of `/scriptable-ios` in its dependencies.
For example:
- Package version: `1.0.0` works with /scriptable-ios@1.7.7
- Package version: `1.1.0` works with /scriptable-ios@1.7.8
## Version Management
This package uses automated version management to stay in sync with /scriptable-ios:
- Automatic daily checks for updates
- Version synchronization across all dependencies
- Automated releases for minor and patch updates
- Manual review process for major version updates
### Scripts
- `pnpm sync` - Check version consistency
- `pnpm check-update` - Check for updates
- `pnpm auto-release` - Automated release process
### Automated Workflow
1. Daily checks for /scriptable-ios updates
2. Automatic version synchronization
3. Automated testing and building
4. Automatic releases for compatible updates
5. Issue creation for major version changes