Registry /
messaging / insite-subscriptions-server
Install & Compatibility
Where this runs
No compatibility data collected yet for this library.
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
publications
✓ import { publications } from 'insite-subscriptions-server'
✗ const publications = require('insite-subscriptions-server').publications
Package is ESM-only since v2. CommonJS require() will not work. 'publications' is a global Map instance.
Publication
✓ import { Publication } from 'insite-subscriptions-server'
✗ import { Publication } from 'insite-subscriptions-server/main'
No subpath export '/main' exists. Use default package path.
CollectionMapPublication
✓ import { CollectionMapPublication } from 'insite-subscriptions-server'
✗ import CollectionMapPublication from 'insite-subscriptions-server'
CollectionMapPublication is a named export, not default.
SubscriptionHandler
✓ import { SubscriptionHandler } from 'insite-subscriptions-server/ws'
✗ import { SubscriptionHandler } from 'insite-subscriptions-server'
SubscriptionHandler is only exported from the WS entry point (insite-subscriptions-server/ws). It is not available from the main entry.
type Projection
✓ import type { Projection } from 'insite-subscriptions-server'
✗ import { Projection } from 'insite-subscriptions-server'
Projection is a TypeScript type only, not a runtime value. Use 'import type' to avoid bundler issues.
Creates an object publication, subscribes to it, sets up a MongoDB-backed map publication with Change Stream updates, integrates with WebSocket server, and sends server-wide publish event.
import { Publication, CollectionMapPublication } from 'insite-subscriptions-server';
import { SubscriptionHandler } from 'insite-subscriptions-server/ws';
import { WatchedCollection } from 'insite-db';
import { WebSocketServer } from 'ws';
// Object publication
const pub = new Publication('myPub', {
fetch: (userId) => ({ user: userId, count: 42 })
});
setInterval(() => pub.changed('time-update'), 10000);
// Subscription handle
const handle = pub.subscribe({
args: ['user1'],
handler: (data, reason) => console.log('Got', data, 'reason:', reason)
});
// Map publication (requires insite-db)
const collection = new WatchedCollection('items');
const mapPub = new CollectionMapPublication('itemsPub', {
collection,
query: { userId: 'user1' },
projection: { _id: 1, name: 1, price: 1 },
sort: { createdAt: -1 }
});
// WS integration
const wss = new WebSocketServer({ port: 8080 });
const handler = new SubscriptionHandler(wss, {
authenticate: (ws, req) => ({ userId: 'user1' })
});
wss.on('connection', (ws, req) => handler.handleConnection(ws, req));
// Server-wide publish
import { wss as globalWss } from 'insite-subscriptions-server/ws';
globalWss.publish('event', { message: 'Hello' });
Errors
Common errors & fixes
ERR_REQUIRE_ESM
Using require() on an ESM-only package (v2+).
fixChange to import statement: import { Publication } from 'insite-subscriptions-server' Cannot find module 'insite-subscriptions-server/ws'
Import path not recognized due to subpath exports misconfiguration or outdated Node.js.
fixUpdate Node.js to >=20.0.0 and ensure package version is 2.x. Also verify tsconfig has proper moduleResolution.
TypeError: Publication is not a constructor
Default import instead of named import for Publication.
fixUse named import: import { Publication } from 'insite-subscriptions-server' Property 'publish' does not exist on type 'WebSocketServer'
Attempting to use wss.publish() on a plain WebSocketServer without insite-ws integration.
fixUse the 'wss' exported from 'insite-subscriptions-server/ws' which extends WebSocketServer with publish().
Audit
Dependencies
insite-dbrequiredProvides WatchedCollection for map mode publications
insite-wsoptionalRequired for WebSocket integration (entry point insite-subscriptions-server/ws)
insite-users-server-wsoptionalRequired for user-specific WebSocket middleware (entry point insite-subscriptions-server/ws)