Client Installation
The @vaultsandbox/client SDK provides a developer-friendly interface for integrating email testing into your Node.js applications and test suites.
Requirements
Section titled “Requirements”- Node.js: 20.0.0 or higher
- Platform: Node.js only (not supported in browsers or edge runtimes)
- VaultSandbox Gateway: Running instance with API access
Installation
Section titled “Installation”npm install @vaultsandbox/clientyarn add @vaultsandbox/clientpnpm add @vaultsandbox/clientQuick Start
Section titled “Quick Start”Basic Usage
Section titled “Basic Usage”import { VaultSandboxClient } from '@vaultsandbox/client';
const client = new VaultSandboxClient({ url: 'https://mail.example.com', apiKey: 'your-api-key',});
const inbox = await client.createInbox();console.log(`Send email to: ${inbox.emailAddress}`);
const email = await inbox.waitForEmail({ timeout: 30000 });console.log('Received:', email.subject);
await inbox.delete();Verifying Installation
Section titled “Verifying Installation”Create a test file test-vaultsandbox.js:
import { VaultSandboxClient } from '@vaultsandbox/client';
async function test() { const client = new VaultSandboxClient({ url: process.env.VAULTSANDBOX_URL, apiKey: process.env.VAULTSANDBOX_API_KEY, });
try { const serverInfo = await client.getServerInfo(); console.log('✅ Connected to VaultSandbox'); console.log('Allowed domains:', serverInfo.allowedDomains);
const inbox = await client.createInbox(); console.log('✅ Created inbox:', inbox.emailAddress);
await inbox.delete(); console.log('✅ Cleanup successful');
console.log('\n🎉 Installation verified!'); } catch (error) { console.error('❌ Error:', error.message); process.exit(1); }}
test();Run it:
export VAULTSANDBOX_URL=https://mail.example.comexport VAULTSANDBOX_API_KEY=your-api-keynode test-vaultsandbox.jsTypeScript Support
Section titled “TypeScript Support”The SDK is written in TypeScript and includes full type definitions.
TypeScript Configuration
Section titled “TypeScript Configuration”Ensure your tsconfig.json has:
{ "compilerOptions": { "target": "ES2022", "module": "ES2022", "moduleResolution": "node", "esModuleInterop": true, "strict": true }}TypeScript Example
Section titled “TypeScript Example”import { VaultSandboxClient, Email, Inbox } from '@vaultsandbox/client';
const client: VaultSandboxClient = new VaultSandboxClient({ url: 'https://mail.example.com', apiKey: process.env.VAULTSANDBOX_API_KEY!,});
const inbox: Inbox = await client.createInbox();const email: Email = await inbox.waitForEmail({ timeout: 30000 });
console.log(email.subject); // TypeScript knows this is a stringESM vs CommonJS
Section titled “ESM vs CommonJS”The VaultSandbox client is distributed as ESM (ES Modules) only.
ESM (Recommended)
Section titled “ESM (Recommended)”import { VaultSandboxClient } from '@vaultsandbox/client';package.json:
{ "type": "module"}CommonJS (Requires Workaround)
Section titled “CommonJS (Requires Workaround)”If you must use CommonJS, use dynamic import:
async function loadClient() { const { VaultSandboxClient } = await import('@vaultsandbox/client'); return VaultSandboxClient;}
const VaultSandboxClient = await loadClient();const client = new VaultSandboxClient({ url, apiKey });Next Steps
Section titled “Next Steps”- Configuration - Configure the client for your environment
- Core Concepts - Understand inboxes, emails, and authentication
- Guides - Learn common usage patterns
- Testing Patterns - Integrate with your test suite