@teincfood/chat-client 0.1.23 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAO5C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAsB;gBAExB,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAKpE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,OAAO,CAAC,UAAU;IAIlB,kEAAkE;IAC5D,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,OAAO,CAAC,OAAO;IAMf,uEAAuE;IACvE,MAAM,CACJ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACxC,WAAW;IAyBd,iEAAiE;IACjE,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAW9C;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAkB5C,sDAAsD;IACtD,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,EAAE;IAMjD,oDAAoD;IACpD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,4DAA4D;IAC5D,MAAM,IAAI,WAAW,EAAE;IAIvB,yDAAyD;IACzD,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"optimistic.d.ts","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAO5C,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAiC;IAChD,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,MAAM,CAAsB;gBAExB,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAKpE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAItC,OAAO,CAAC,UAAU;IAIlB,kEAAkE;IAC5D,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAepD,OAAO,CAAC,OAAO;IAMf,uEAAuE;IACvE,MAAM,CACJ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACxC,WAAW;IAyBd,iEAAiE;IACjE,gBAAgB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAW9C;;;;OAIG;IACH,SAAS,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI;IAuB5C,sDAAsD;IACtD,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,WAAW,EAAE;IAMjD,oDAAoD;IACpD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,4DAA4D;IAC5D,MAAM,IAAI,WAAW,EAAE;IAIvB,yDAAyD;IACzD,KAAK,IAAI,IAAI;CAMd"}
@@ -85,20 +85,28 @@ class OptimisticEngine {
85
85
  * Returns the matched temp's _clientId (if any) for callers to identify it.
86
86
  */
87
87
  reconcile(serverMsg) {
88
- const serverTime = new Date(serverMsg.inserted_at).getTime();
88
+ // Match the most recently created pending temp with the same conversation
89
+ // and content. We deliberately do not enforce a tight time window: client
90
+ // and server clocks can skew, and a tight window leaves optimistic temps
91
+ // stuck as "Sending..." forever (which surfaces as duplicate messages).
92
+ let bestCid = null;
93
+ let bestTime = -Infinity;
89
94
  for (const [cid, temp] of this.pending) {
90
95
  if (temp.conversation_id !== serverMsg.conversation_id)
91
96
  continue;
92
97
  if (temp.content !== serverMsg.content)
93
98
  continue;
94
99
  const tempTime = new Date(temp.inserted_at).getTime();
95
- if (Math.abs(serverTime - tempTime) > 10000)
96
- continue;
97
- this.pending.delete(cid);
100
+ if (tempTime > bestTime) {
101
+ bestTime = tempTime;
102
+ bestCid = cid;
103
+ }
104
+ }
105
+ if (bestCid) {
106
+ this.pending.delete(bestCid);
98
107
  this.persist();
99
- return cid;
100
108
  }
101
- return null;
109
+ return bestCid;
102
110
  }
103
111
  /** Return all pending messages for a conversation. */
104
112
  getPending(conversationId) {
@@ -1 +1 @@
1
- {"version":3,"file":"optimistic.js","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":";;;AAGA,IAAI,eAAe,GAAG,CAAC,CAAA;AACvB,SAAS,YAAY;IACnB,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAA;AACjD,CAAC;AAED,MAAa,gBAAgB;IAM3B,YAAY,OAA0B,EAAE,OAA4B;QAL5D,YAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;QAGxC,WAAM,GAAkB,IAAI,CAAA;QAGlC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,IAAI,CAAA;IAChC,CAAC;IAED,SAAS,CAAC,MAAqB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAEO,UAAU;QAChB,OAAO,gBAAgB,IAAI,CAAC,MAAM,IAAI,MAAM,EAAE,CAAA;IAChD,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,IAAI,MAAM,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAgB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;YACzE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACxB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS;wBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;QAClD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,uEAAuE;IACvE,MAAM,CACJ,cAAsB,EACtB,QAAgB,EAChB,IAAY,EACZ,QAAyC;QAEzC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACpC,MAAM,GAAG,GAAgB;YACvB,SAAS,EAAE,YAAY,EAAE;YACzB,EAAE,EAAE,IAAI;YACR,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,QAAQ;YACnB,eAAe,EAAE,cAAc;YAC/B,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,QAAQ,IAAI,IAAI;YAC1B,aAAa,EAAE,IAAI;YACnB,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,GAAG;YACZ,WAAW,EAAE,GAAG;SACjB,CAAA;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAA;QACzC,IAAI,CAAC,OAAO,EAAE,CAAA;QACd,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,iEAAiE;IACjE,gBAAgB,CAAC,cAAsB;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,GAAG,CAAC,eAAe,KAAK,cAAc,EAAE,CAAC;gBAC3C,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAA;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAA;gBACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,SAAS,CAAC,SAAkB;QAC1B,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;QAE5D,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACvC,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,CAAC,eAAe;gBAAE,SAAQ;YAChE,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,OAAO;gBAAE,SAAQ;YAEhD,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAA;YACrD,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,KAAM;gBAAE,SAAQ;YAEtD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,OAAO,EAAE,CAAA;YACd,OAAO,GAAG,CAAA;QACZ,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC;IAED,sDAAsD;IACtD,UAAU,CAAC,cAAsB;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAC7C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,cAAc,CAC5C,CAAA;IACH,CAAC;IAED,oDAAoD;IACpD,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IAED,4DAA4D;IAC5D,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,yDAAyD;IACzD,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC5D,CAAC;IACH,CAAC;CACF;AApID,4CAoIC"}
1
+ {"version":3,"file":"optimistic.js","sourceRoot":"","sources":["../src/optimistic.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teincfood/chat-client",
3
- "version": "0.1.23",
3
+ "version": "0.1.24",
4
4
  "description": "Headless chat client library for TeincFood — handles auth, WebSocket, optimistic sends, and reactive React/RN bindings out of the box.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",