@chargebee/chargebee-apps-libs
v1.0.3
Published
Public library implementations for Chargebee Apps CLI
Keywords
Readme
@chargebee/chargebee-apps-libs
Library implementations for the Chargebee Apps CLI — local development, sandbox execution, logging, configuration, and the web testing UI.
Installation
npm install @chargebee/chargebee-apps-libsThis package is typically installed as a dependency of @chargebee/chargebee-apps. You can also use it directly when building tools on top of the Chargebee Apps platform.
What's included
- Configuration — application config loading with caching and validation
- Logging — structured logging and a safe console for sandboxed user code
- Sandbox — VM-based secure execution for event handlers
- Utilities — port validation and related helpers
- Templates — starter app scaffolds used by the CLI
- Web UI — browser interface for local handler testing
Templates
serverless-node-starter-app
Basic Node.js serverless app with sample handlers, test data, and TypeScript definitions.
serverless-node-starter-app-with-iparams
Same as the starter app, plus sectioned installation parameters:
iparams.json— parameter definitions underinstallation_parameters.sectionsiparams.local.json— local values keyed by section name- Handlers receive
payload.iparams.<section>.<param>
See templates/serverless-node-starter-app-with-iparams/README.md for the full iparams schema and examples.
Usage
import {
ConfigLoader,
createCBPublicLogger,
PublicSandboxWrapper,
} from '@chargebee/chargebee-apps-libs';
import {
CBFileSystem,
CBProcess,
DependencyManager,
ManifestValidator,
PackageValidator,
} from '@chargebee/chargebee-apps-shared';
const configLoader = new ConfigLoader();
const allowedModules = configLoader.loadAllowedModules();
const fileSystem = new CBFileSystem();
const processService = new CBProcess();
const packageValidator = new PackageValidator(fileSystem);
const manifestValidator = new ManifestValidator(allowedModules);
const dependencyManager = new DependencyManager(fileSystem);
const manifest = manifestValidator.validateFile('./my-app/manifest.json');
await dependencyManager.ensureDependencies('./my-app', manifest);
const logger = createCBPublicLogger(fileSystem, processService, './my-app');
const sandbox = new PublicSandboxWrapper(
allowedModules,
fileSystem,
packageValidator,
dependencyManager,
manifestValidator
);
const result = await sandbox.execute('./my-app', { event: eventData }, logger);Security
- Module whitelisting — only approved npm modules can be used
- Sandboxed execution — user code runs in isolated VM contexts
- Controlled logging — user code logging is managed and correlated
Dependencies
@chargebee/chargebee-apps-shared— shared interfaces, validators, and utilitiesdotenv— environment variable loading for local development
Related packages
@chargebee/chargebee-apps— CLI for creating, running, and packaging apps@chargebee/chargebee-apps-shared— shared types and core utilities
License
MIT
