Skip to content

Forge Overview

Core SDK for managing project assets across multiple version control systems.

Forge is a powerful SDK for managing project assets (bundles and starters) with a plugin-based resolver architecture that supports GitHub, GitLab, Bitbucket, and custom source control providers.

The Forge SDK (@fractary/forge) provides reusable components for asset resolution, caching, configuration management, and file operations.

Terminal window
npm install @fractary/forge

Extensible architecture for multiple VCS providers. Register custom resolvers for any source control system.

Built-in support for GitHub, static catalogs, and local/embedded assets. Add support for GitLab, Bitbucket, or custom providers.

Manage bundles and starters with ownership rules and intelligent file filtering.

Intelligent caching with configurable TTL:

  • 1 hour for branches (frequently updated)
  • 24 hours for releases (stable versions)

Multi-source configuration with global and project-level settings.

Full TypeScript support with comprehensive type definitions and subpath exports.

import { ResolverManager, GitHubResolver } from '@fractary/forge';
// Initialize resolver manager
const manager = new ResolverManager();
// Register GitHub resolver
manager.registerResolver(new GitHubResolver({
token: process.env.GITHUB_TOKEN,
defaultOrg: 'fractary'
}));
// Resolve and fetch an asset
const asset = await manager.resolveAsset('fractary/forge-bundle-auth@v1.0.0');
console.log(asset.manifest.name);
console.log(`${asset.files.size} files`);
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ ResolverManager β”‚
β”‚ (Routes requests to resolvers) β”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚ β”‚ β”‚
β–Ό β–Ό β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GitHub β”‚ β”‚Catalog β”‚ β”‚ Local β”‚
β”‚Resolver β”‚ β”‚Resolverβ”‚ β”‚ Resolverβ”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Fetch assets from GitHub repositories via API:

  • Tarball download and extraction
  • Smart caching (1hr for branches, 24hr for releases)
  • File filtering based on manifest patterns
  • Authentication via GitHub tokens

Static JSON catalog for asset discovery:

  • Multi-catalog management
  • Asset search and discovery
  • Offline support with disk caching

Local filesystem and embedded assets:

  • file:// URL support
  • Embedded asset loading
  • Development and testing

Implement the IResolver interface for custom sources like:

  • GitLab
  • Bitbucket
  • S3 buckets
  • Custom registries
// Explicit resolver prefix
'github:owner/repo@ref' β†’ GitHubResolver
'catalog:asset-id' β†’ CatalogResolver
'file:///path/to/asset' β†’ LocalResolver
// Default resolver (configured)
'owner/repo@ref' β†’ Default resolver
import { ConfigManager } from '@fractary/forge';
const configMgr = new ConfigManager();
const config = await configMgr.loadGlobalConfig();
// Configure multiple resolvers
config.resolvers.github = {
token: process.env.GITHUB_TOKEN,
defaultOrg: 'fractary'
};
config.resolvers.default = 'github';

The SDK provides subpath exports for granular imports:

import { ResolverManager } from '@fractary/forge';
import { GitHubResolver } from '@fractary/forge/resolvers';
import { ForgeConfig } from '@fractary/forge/types';
import { ConfigManager } from '@fractary/forge/config';
import { CacheManager } from '@fractary/forge/cache';
import { ForgeError } from '@fractary/forge/errors';
  • Bundle Distribution - Distribute pre-configured component bundles
  • Project Scaffolding - Initialize new projects from starter templates
  • Multi-Repo Management - Sync assets across multiple repositories
  • Development Tooling - Build CLIs and automation tools

Current Version: 1.0.0 Status: Production Ready License: MIT

The SDK is complete and published to GitHub Package Registry. Additional features planned for v1.1.0.

  • forge-cli - CLI tool built on Forge SDK
  • forge-bundle-* - Pre-built bundles for common use cases
  • forge-catalog - Public catalog of Forge assets