close
Skip to content

Commit c5db75a

Browse files
feat(#1,#4): queue-before-load + identity state machine
Every provider method is now safe to call before the CDN script finishes booting. Calls buffered into a per-provider queue, drained in order once the real global is exposed. - new _queue.ts: generic in-memory op queue with ready/reset/drain - new _identity.ts: state machine (anonymous/identified) with onChange listeners and typed Verification discriminated union (hmac for intercom/crisp/tawk/chatwoot, jwt for hubspot, jwt+callback for zendesk messenger) - intercom: install official queue stub before CDN boots so pre-load calls are preserved; HMAC via user_hash - crisp: keep queue-native \$crisp.push; HMAC for user:email - tawk: Tawk_API.onLoad feeds our queue; HMAC for setAttributes - zendesk: queue over zE; jwt or callback required for loginUser - hubspot: _hsq queue-native for identify/track; hsConversationsOnReady feeds our queue for widget ops; jwt verification sets identificationToken - chatwoot: chatwoot:ready event feeds queue; identifier_hash for setUser - every method is SSR-safe (returns resolved Promise when !isBrowser()) Tests: 39 green (queue drain order, reentrant enqueue, identity transitions, pre-boot call buffering via jsdom). Preempts competitor bugs cited in #1 (react-use-intercom#635/#747/#824, crisp-sdk-web#11/#28, tawk-messenger-react#9/#26) and #4 (chatwoot#7065/#13448, crisp-sdk-web#19/#32/#49). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 664ab2e commit c5db75a

18 files changed

+3189
-126
lines changed

‎package.json‎

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,27 @@
44
"description": "Zero-dependency TypeScript wrappers for live chat & customer support widgets — Intercom, Crisp, Tawk.to, Zendesk, HubSpot and more. Unified API, tree-shakeable.",
55
"keywords": [
66
"ahize",
7-
"live-chat",
8-
"customer-support",
97
"chat-widget",
10-
"intercom",
11-
"crisp",
12-
"tawk",
13-
"zendesk",
14-
"hubspot",
158
"chatwoot",
16-
"self-hosted",
17-
"livechat",
9+
"crisp",
10+
"customer-support",
1811
"drift",
12+
"esm",
1913
"freshchat",
2014
"helpscout",
15+
"hubspot",
16+
"intercom",
17+
"live-chat",
18+
"livechat",
2119
"olark",
22-
"userlike",
20+
"self-hosted",
2321
"smartsupp",
22+
"tawk",
2423
"tree-shakeable",
2524
"typescript",
26-
"zero-dependency",
27-
"esm"
25+
"userlike",
26+
"zendesk",
27+
"zero-dependency"
2828
],
2929
"homepage": "https://github.com/productdevbook/ahize",
3030
"bugs": {
@@ -88,6 +88,7 @@
8888
"@typescript/native-preview": "7.0.0-dev.20260316.1",
8989
"@vitest/coverage-v8": "^4.1.2",
9090
"bumpp": "^11.0.1",
91+
"jsdom": "^29.0.2",
9192
"obuild": "^0.4.32",
9293
"oxfmt": "^0.42.0",
9394
"oxlint": "^1.57.0",

0 commit comments

Comments
 (0)