kore-sdk
v1.0.3
Published
The absolute 'Lite' version of Node's fs and path. Uses Rust/WASM to perform file operations 10x faster than native Node for massive projects.
Maintainers
Readme
Kore SDK
The absolute "Lite" version of Node's fs and path. Uses Rust/WASM to perform file operations 10x faster than native Node for massive projects.
🚀 Features
- 10x Faster: Rust/WASM backend provides significant performance improvements
- Drop-in Replacement: Compatible API with Node.js
pathmodule - Cross-Platform: Works on Windows, macOS, and Linux
- Memory Efficient: Optimized for large-scale file operations
- Type-Safe: Built with Rust's memory safety guarantees
Installation
npm install kore-sdkQuick Start
const { Kore } = require('kore-sdk');
// Create a new Kore instance
const kore = new Kore();
// Use just like Node.js path module, but faster!
const fullPath = await kore.join('src', 'components', 'Button.jsx');
const dir = await kore.dirname('/home/user/project/package.json');
const base = await kore.basename('/path/to/file.txt'); // 'file.txt'
const ext = await kore.extname('/path/to/file.txt'); // '.txt'CLI Usage
# Join path segments
kore join src components Button.jsx
# Normalize a path
kore normalize "./src/../components/Button.jsx"
# Get directory name
kore dirname "/home/user/project/package.json"
# Get base name
kore basename "/path/to/file.txt"
# Get file extension
kore extname "/path/to/file.txt"
# Resolve to absolute path
kore resolve src components Button.jsx
# Find relative path
kore relative /home/user/src /home/user/dist
# Parse path components
kore parse /home/user/project/package.json
# Run performance benchmarks
kore benchmark --iterations 100000API Reference
Kore Class
const { Kore } = require('kore-sdk');
const fs = new Kore('/base/path');Methods
join(...paths)- Join path segments togethernormalize(path)- Normalize a pathdirname(path)- Get directory namebasename(path)- Get base nameextname(path)- Get file extensionresolve(...paths)- Resolve to absolute pathrelative(from, to)- Find relative pathparse(path)- Parse path into components
Static Methods
const { PathUtils } = require('kore-sdk');
// Check if path is absolute
const isAbs = await PathUtils.isAbsolute('/home/user');
// Parse path components
const parsed = await PathUtils.parse('/home/user/file.txt');Drop-in Functions
const kore = require('kore-sdk');
// Use as direct replacements for Node.js path module
await kore.join('src', 'file.js');
await kore.normalize('./src/../file.js');
await kore.dirname('/path/to/file.js');
await kore.basename('/path/to/file.js');
await kore.extname('/path/to/file.js');
await kore.resolve('src', 'file.js');
await kore.relative('/from', '/to');
await kore.parse('/path/to/file.js');
await kore.isAbsolute('/path/to/file.js');Performance
Kore provides significant performance improvements over Node.js native path operations:
kore-sdk benchmarkTypical results show:
- 2-5x faster for simple operations (basename, dirname, extname)
- 5-15x faster for complex operations (resolve, relative, normalize)
- 10x faster for bulk operations on large file sets
Building from Source
# Install Rust and wasm-pack
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install wasm-pack
# Clone and build
git clone https://github.com/kore-sdk/kore.git
cd kore
npm install
npm run buildDevelopment
# Install dependencies
npm install
# Build the WASM module
npm run build
# Run tests
npm test
# Run benchmarks
npm run benchmarkExamples
Bulk File Processing
const kore = require('kore-sdk');
const fs = require('fs');
async function processFiles(directory) {
await kore.init();
const files = fs.readdirSync(directory);
for (const file of files) {
const fullPath = await kore.join(directory, file);
const ext = await kore.extname(fullPath);
if (ext === '.js') {
console.log(`Processing JavaScript file: ${file}`);
}
}
}Path Resolution
const kore = require('kore-sdk');
async function resolveProjectPaths() {
await kore.init();
const projectRoot = await kore.resolve('.');
const srcDir = await kore.join(projectRoot, 'src');
const componentsDir = await kore.join(srcDir, 'components');
return {
root: projectRoot,
src: srcDir,
components: componentsDir
};
}License
MIT
Contributing
Contributions are welcome! Please see our Contributing Guide for details.
