This guide helps you migrate from the legacy Broker to the recommended Broker1 implementation.
- Broker1 is the actively maintained implementation
- Broker will be deprecated and eventually removed
- Broker1 is used by all CLI tools and internal utilities
- Both have identical APIs, so migration is straightforward
Before:
import {Broker} from 'live-mutex';
// or
import {LMXBroker} from 'live-mutex';After:
import {Broker1} from 'live-mutex';
// or use the alias
import {LMXBroker1} from 'live-mutex';Before:
const broker = new Broker({port: 6970, host: 'localhost'});After:
const broker = new Broker1({port: 6970, host: 'localhost'});The APIs are identical, so your existing code should work without any other changes.
Before:
import {Broker} from 'live-mutex';
const broker = new Broker({
port: 6970,
host: '0.0.0.0'
});
broker.ensure((err) => {
if (err) {
console.error('Broker failed to start:', err);
process.exit(1);
}
console.log('Broker is running');
});After:
import {Broker1} from 'live-mutex';
const broker = new Broker1({
port: 6970,
host: '0.0.0.0'
});
broker.ensure((err) => {
if (err) {
console.error('Broker failed to start:', err);
process.exit(1);
}
console.log('Broker is running');
});Before:
import {Broker} from 'live-mutex';
const broker = new Broker({port: 6970});
broker.ensure()
.then(() => {
console.log('Broker started');
})
.catch((err) => {
console.error('Broker failed:', err);
});After:
import {Broker1} from 'live-mutex';
const broker = new Broker1({port: 6970});
broker.ensure()
.then(() => {
console.log('Broker started');
})
.catch((err) => {
console.error('Broker failed:', err);
});Before:
import {Broker} from 'live-mutex';
async function startBroker() {
const broker = new Broker({port: 6970});
await broker.ensure();
console.log('Broker is running');
}After:
import {Broker1} from 'live-mutex';
async function startBroker() {
const broker = new Broker1({port: 6970});
await broker.ensure();
console.log('Broker is running');
}Before:
import {Broker} from 'live-mutex';
const broker = new Broker({port: 6970});
broker.emitter.on('error', (err) => {
console.error('Broker error:', err);
});
broker.emitter.on('warning', (msg) => {
console.warn('Broker warning:', msg);
});
await broker.ensure();After:
import {Broker1} from 'live-mutex';
const broker = new Broker1({port: 6970});
broker.emitter.on('error', (err) => {
console.error('Broker error:', err);
});
broker.emitter.on('warning', (msg) => {
console.warn('Broker warning:', msg);
});
await broker.ensure();- Update all
import {Broker}statements toimport {Broker1} - Update all
new Broker()calls tonew Broker1() - Update any type annotations from
BrokertoBroker1 - Run your test suite
- Verify broker functionality in your environment
- Update documentation/comments that reference
Broker
# Find all imports
grep -r "import.*Broker[^1]" src/
# Find all constructor calls
grep -r "new Broker(" src/
# Find all type annotations
grep -r ": Broker" src/If you're using TypeScript, the compiler will help you find all usages when you remove the Broker export.
Before:
function createBroker(port: number): Broker {
return new Broker({port});
}After:
function createBroker(port: number): Broker1 {
return new Broker1({port});
}Before:
type MyBroker = Broker;
const broker: MyBroker = new Broker({port: 6970});After:
type MyBroker = Broker1;
const broker: MyBroker = new Broker1({port: 6970});Before:
const broker = Broker.create({port: 6970});After:
const broker = Broker1.create({port: 6970});During the transition period, both Broker and Broker1 will be available. However, Broker will eventually be:
- Marked as deprecated (with warnings in console)
- Removed in a future major version
After migrating, test these scenarios:
-
Broker startup:
const broker = new Broker1({port: 6970}); await broker.ensure();
-
Lock acquisition/release:
const client = new Client({port: 6970}); await client.ensure(); const {id} = await client.acquire('test-key'); await client.release('test-key', id);
-
Error handling:
try { await broker.ensure(); } catch (err) { // Handle errors }
If you encounter issues after migration, you can temporarily rollback:
// Temporary rollback
import {Broker as Broker1} from 'live-mutex';However, this is not recommended long-term. Instead, report issues so they can be fixed in Broker1.
If you encounter issues during migration:
- Check BROKER-COMPARISON.md for differences
- Review the README-2.md for usage examples
- Open an issue on GitHub with details about your use case
- Now: Start migrating to Broker1
- Next minor version: Broker will show deprecation warnings
- Next major version: Broker will be removed
Migration is simple:
- Change
BrokertoBroker1in imports - Change
new Broker()tonew Broker1() - Test your code
The APIs are identical, so no other changes are needed!