@bootdesk/js-web-adapter-core
    Preparing search index...

    @bootdesk/js-web-adapter-core

    @bootdesk/js-web-adapter-core

    Core JavaScript SDK for BootDesk Chat SDK — framework-agnostic chat client with real-time broadcasting, streaming, and push notifications.

    npm install @bootdesk/js-web-adapter-core
    
    import { WebChatClient } from "@bootdesk/js-web-adapter-core";

    const client = new WebChatClient({
    apiUrl: "https://your-app.com/api",
    userId: "user-1",
    userName: "Alice",
    });

    const unsub = client.onMessagePosted((event) => {
    console.log("New message:", event.text);
    });

    await client.connect();
    Method Description
    connect() Initialize connection, start listening
    disconnect() Cleanup, remove listeners
    loadMessages(options?) Fetch paginated messages
    sendMessage(text, attachments?) Send a new message
    sendAction(messageId, actionId, value) Send a button action
    editMessage(messageId, text) Edit an existing message
    deleteMessage(messageId) Delete a message
    addReaction(messageId, emoji) Add a reaction
    removeReaction(messageId, emoji) Remove a reaction
    onMessagePosted(cb) Subscribe to new messages
    onMessageEdited(cb) Subscribe to edits
    onMessageDeleted(cb) Subscribe to deletions
    onReactionAdded(cb) Subscribe to reaction adds
    onReactionRemoved(cb) Subscribe to reaction removes
    onTypingStarted(cb) Subscribe to typing events
    onStreamingChunk(cb) Subscribe to streaming chunks
    reconfigure(config) Update identity (userId, userName, verifyToken, conversationId, headers) after construction

    Use reconfigure() to update the client's identity after construction — useful for pre-entry flows where the user's info is collected first:

    client.reconfigure({
    userId: "user-abc",
    userName: "Alice",
    verifyToken: "encrypted-token",
    conversationId: "conv-xyz",
    });

    Updates HTTP headers (X-User-Id, X-User-Name, X-Verify-Token) and internal state.

    import { PusherBroadcastClient } from "@bootdesk/js-web-adapter-core";

    const broadcast = new PusherBroadcastClient({
    key: "pusher-key",
    cluster: "us2",
    });

    const client = new WebChatClient({
    apiUrl: "https://your-app.com/api",
    userId: "user-1",
    userName: "Alice",
    broadcastClient: broadcast,
    });
    import { PushManager, createPushSubscriptionHandlers } from "@bootdesk/js-web-adapter-core";
    import { HttpClient } from "@bootdesk/js-web-adapter-core";

    const httpClient = new HttpClient({ apiUrl: "https://your-app.com/api" });
    const manager = new PushManager({
    getVapidPublicKey: async () => "your-vapid-public-key",
    onSubscribe: createPushSubscriptionHandlers(httpClient, "user-1").onSubscribe,
    onUnsubscribe: createPushSubscriptionHandlers(httpClient, "user-1").onUnsubscribe,
    });

    await manager.initialize();
    await manager.subscribe();

    manager.onMessage((data) => {
    console.log("Push received:", data);
    });

    MIT