COON JavaScript/TypeScript SDK

Token-efficient code compression for Dart/Flutter, optimized for LLM contexts.
Table of Contents
Installation
npm install @coon-format
pnpm add @coon-format
yarn add @coon-format
Quick Start
import { compressDart, decompressCoon } from '@coon-format';
const dartCode = `
class MyWidget extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("Hello World"),
),
);
}
}
`;
const compressed = compressDart(dartCode);
console.log(compressed);
const original = decompressCoon(compressed);
Advanced Usage
Using the Compressor Class
import { Compressor, CompressionStrategyType } from '@coon-format';
const compressor = new Compressor({
strategy: CompressionStrategyType.AUTO,
enableMetrics: true,
validate: true
});
const result = compressor.compress(dartCode);
console.log(`Original tokens: ${result.originalTokens}`);
console.log(`Compressed tokens: ${result.compressedTokens}`);
console.log(`Savings: ${result.percentageSaved.toFixed(1)}%`);
console.log(`Strategy used: ${result.strategyUsed}`);
Using Specific Strategies
import { Compressor, CompressionStrategyType } from '@coon-format';
const compressor = new Compressor();
const result = compressor.compress(dartCode, CompressionStrategyType.AGGRESSIVE);
const safeResult = compressor.compress(dartCode, CompressionStrategyType.BASIC);
Decompression with Formatting
import { Decompressor } from '@coon-format';
const decompressor = new Decompressor({
formatOutput: true,
indentSize: 2
});
const result = decompressor.decompress(compressed);
console.log(result.code);
Compression Strategies
AUTO | 50-70% | Fast | Automatic optimal selection |
BASIC | 30-40% | Fastest | Simple abbreviations |
AGGRESSIVE | 60-70% | Fast | Maximum compression |
AST_BASED | 50-65% | Moderate | Syntax tree analysis |
COMPONENT_REF | 70-80% | Moderate | Pattern-based references |
Strategy Selection
import { CompressionStrategyType } from '@coon-format';
CompressionStrategyType.AUTO
CompressionStrategyType.BASIC
CompressionStrategyType.AGGRESSIVE
CompressionStrategyType.AST_BASED
CompressionStrategyType.COMPONENT_REF
API Reference
Core Functions
compressDart(code: string, strategy?: CompressionStrategyType): string
Compress Dart code to COON format.
const compressed = compressDart(dartCode);
const compressed = compressDart(dartCode, CompressionStrategyType.AGGRESSIVE);
decompressCoon(compressed: string): string
Decompress COON format back to Dart code.
const original = decompressCoon(compressed);
Classes
Compressor
Main compression class with configuration options.
interface CompressorConfig {
strategy?: CompressionStrategyType;
enableMetrics?: boolean;
validate?: boolean;
}
const compressor = new Compressor(config);
const result = compressor.compress(code, strategy?);
Decompressor
Decompression class with formatting options.
interface DecompressorConfig {
formatOutput?: boolean;
indentSize?: number;
}
const decompressor = new Decompressor(config);
const result = decompressor.decompress(compressed);
CompressionResult
Result object containing compression output and metrics.
interface CompressionResult {
compressed: string;
originalTokens: number;
compressedTokens: number;
percentageSaved: number;
strategyUsed: string;
}
Types
import {
Compressor,
Decompressor,
CompressionResult,
CompressionStrategyType,
CompressorConfig,
DecompressorConfig
} from '@coon-format';
Architecture
src/
├── core/ # Compressor, Decompressor, Config, Result
│ ├── compressor.ts
│ ├── decompressor.ts
│ ├── config.ts
│ └── result.ts
├── strategies/ # Compression strategy implementations
│ ├── base.ts
│ ├── basic.ts
│ ├── aggressive.ts
│ ├── ast_based.ts
│ └── component_ref.ts
├── data/ # Data loader for abbreviations
├── languages/ # Language-specific handlers
│ └── dart/
├── parser/ # Lexer, Parser, AST
└── utils/ # Validator, Formatter, Registry
Data Files
The SDK loads abbreviation data from the shared spec/data/ directory:
widgets.json | Widget abbreviations (Scaffold → S, Column → C) |
properties.json | Property abbreviations (appBar: → a:, body: → b:) |
keywords.json | Keyword abbreviations (class → c:, extends → <) |
Testing
npm test
npm run test:coverage
npm run test:conformance
npm run test:watch
Building
npm run build
npm run typecheck
npm run lint
License
MIT - See LICENSE for details.