@medipha/chat-core 1.0.8 → 1.0.9

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.
@@ -34,6 +34,8 @@ export interface GetUsersQuery {
34
34
  search?: string;
35
35
  departmentId?: string | null;
36
36
  branchId?: string | null;
37
+ /** Exact match against the ERP-sourced work status (e.g. "Nghỉ việc") — any of these. */
38
+ workStatus?: string[] | null;
37
39
  }
38
40
  export declare function getUsers(query?: GetUsersQuery): Promise<unknown>;
39
41
  export declare function getUserBranches(): Promise<unknown>;
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("socket.io-client");function t(e){return e.map(([e,t])=>`${n(e)}=${n(String(t))}`).join(`&`)}function n(e){return encodeURIComponent(e).replace(/[!'()~]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/%20/g,`+`)}var r=class extends Error{constructor(e,t,n){super(e),this.status=t,this.code=n,this.name=`ChatApiError`}},i={apiBaseUrl:``,getAccessToken:()=>null};function a(e){i=e}var o=e=>`${i.apiBaseUrl}${e.startsWith(`/`)?e:`/${e}`}`,s=e=>o(`/data/docs/${e}`),c=(e,t)=>e?/^https?:\/\//i.test(e)?e:o(e):t?s(t):null;async function l(e,t={}){let n=new Headers(t.headers),a=i.getAccessToken(),s=t.auth!==!1,c={...t};delete c.auth,t.body instanceof FormData||n.set(`Content-Type`,`application/json`),s&&a&&n.set(`Authorization`,`Bearer ${a}`);let l=await fetch(o(e),{...c,headers:n}),u=l.headers.get(`content-type`)?.includes(`application/json`)?await l.json():null;if(!l.ok){let e=u;throw new r(e?.message??`Request failed with status ${l.status}`,l.status,e?.code)}return u}function u(e){return l(`/users/${e}`)}function d(e={}){let n=[];e.cursor&&n.push([`cursor`,e.cursor]),e.limit&&n.push([`limit`,String(e.limit)]),e.search&&n.push([`search`,e.search]),e.departmentId&&n.push([`departmentId`,e.departmentId]),e.branchId&&n.push([`branchId`,e.branchId]);let r=t(n);return l(r?`/users?${r}`:`/users`)}function f(){return l(`/users/branches`)}function p(e){return l(`/departments/by-branch/${e}`)}function m(){return l(`/conversations`,{method:`GET`,auth:!0})}function h(e){return l(`/conversations/${e}`)}function ee(e){return l(`/conversations`,{method:`POST`,body:JSON.stringify(e)})}function g(e,t){return l(`/conversations/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function _(e,t){return l(`/conversations/${e}/pin`,{method:`PATCH`,body:JSON.stringify({pinned:t})})}function v(e){return l(`/conversations/${e}`,{method:`DELETE`})}function y(e,t){return l(`/conversations/${e}/members`,{method:`POST`,body:JSON.stringify({userId:t})})}function b(e,t){return l(`/conversations/${e}/members`,{method:`POST`,body:JSON.stringify({userIds:t})})}function x(e,t){return l(`/conversations/${e}/members`,{method:`DELETE`,body:JSON.stringify({userIds:t})})}function te(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.cursorPosition!==void 0&&n.cursorPosition!==null&&r.push([`cursorPosition`,String(n.cursorPosition)]),l(`/messages/${e}/system-members?${t(r)}`)}function S(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.cursor&&r.push([`cursor`,String(n.cursor)]),n.search?.trim()&&r.push([`search`,n.search.trim()]),l(`/conversations/${e}/members?${t(r)}`)}function C(e,t){return l(`/conversations/${e}/members/${t}`,{method:`DELETE`})}function w(e,t){return l(`/conversations/${e}/leave`,{method:`PATCH`,body:JSON.stringify({nextOwnerId:t})})}function T(e){return l(`/messages/conversation/${e}/latest`)}function E(e,t){return l(`/messages/conversation/${e}/${t}`,{method:`DELETE`})}function D(e,n={}){let r=[],i=n.beforeSequence!==void 0&&n.beforeSequence!==null,a=n.afterSequence!==void 0&&n.afterSequence!==null;if(i===a)throw Error(`Message history requires exactly one cursor direction`);return i&&r.push([`beforeSequence`,String(n.beforeSequence)]),a&&r.push([`afterSequence`,String(n.afterSequence)]),r.push([`limit`,String(n.limit??20)]),l(`/messages/conversation/${e}?${t(r)}`)}function O(e,t){return l(`/messages/conversation/${e}/around/${t}`)}function k(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.type&&r.push([`type`,n.type]),n.cursorUpdatedAt&&n.cursorUserId&&(r.push([`cursorUpdatedAt`,n.cursorUpdatedAt]),r.push([`cursorUserId`,n.cursorUserId])),l(`/messages/${e}/reactions?${t(r)}`)}function A(e){return l(`/messages/conversation/${e}/pinned`)}function j(e,n={}){let r=String(n.q??``).trim();if(!r)throw Error(`Search keyword is required`);let i=[[`q`,r],[`messageLimit`,String(n.messageLimit??20)],[`documentLimit`,String(n.documentLimit??20)]];return n.messageBeforeSequence&&i.push([`messageBeforeSequence`,String(n.messageBeforeSequence)]),n.documentBeforeSequence&&i.push([`documentBeforeSequence`,String(n.documentBeforeSequence)]),n.senderId&&i.push([`senderId`,n.senderId]),n.fromDate&&i.push([`fromDate`,n.fromDate]),n.toDate&&i.push([`toDate`,n.toDate]),l(`/messages/conversation/${e}/search?${t(i)}`)}function M(e,n){let r=[[`type`,n.type]];return n.month&&r.push([`month`,n.month]),n.from&&r.push([`from`,n.from]),n.to&&r.push([`to`,n.to]),n.senderId&&r.push([`senderId`,n.senderId]),l(`/messages/conversation/${e}/archive?${t(r)}`)}async function N(e,t,n){let r=new FormData;r.append(`file`,e),r.append(`conversationId`,t),n&&r.append(`asDocument`,`true`);let i=await l(`/media/uploads`,{method:`POST`,body:r}),a=i?.id;if(!a)throw Error(`Not found media-id response`);return{mediaId:a,attachmentUrl:i?.url??null,response:i}}async function P(e,t){let{mediaId:n}=await N(e,t);return g(t,{avatarUrl:`/data/docs/${n}`})}var F=``,I=null,L=``,R=new Set,z=!1,B=!1;function V(e){F=e}function H(e){let t=I;if(!t)return()=>void 0;let n=[],r=(e,r)=>{r&&(t.on(e,r),n.push({event:e,listener:r}))};if(r(`conversation:new`,e.onConversationNew),r(`conversation:deleted`,e.onConversationDeleted),r(`conversation:updated`,e.onConversationUpdated),r(`conversation:pinned`,e.onConversationPinned),r(`conversation:membership:changed`,e.onConversationMembershipChanged),e.onMessageSent&&(r(`message:sent`,e.onMessageSent),r(`message:ack`,e.onMessageSent)),e.onMessageNew&&(r(`message:new`,e.onMessageNew),r(`message:created`,e.onMessageNew)),r(`message:removed`,e.onMessageRemoved),r(`message:reaction:updated`,e.onMessageReactionUpdated),r(`message:pinned`,e.onMessagePinned),r(`conversation:read`,e.onConversationRead),r(`conversation:unread`,e.onConversationUnread),r(`presence:changed`,e.onPresenceChanged),r(`typing:start`,e.onTypingStart),r(`typing:stop`,e.onTypingStop),(e.onConnected||e.onConnectionRestored)&&r(`connect`,()=>{e.onConnected?.(),B&&e.onConnectionRestored?.()}),r(`disconnect`,e.onConnectionLost),e.onConnectFailed){let t=t=>{e.onConnectFailed?.(t)};r(`connect_error`,t),r(`error`,t),r(`exception`,t)}return()=>{n.forEach(({event:e,listener:n})=>t.off(e,n))}}function U(e){let t={handlers:e,detach:()=>void 0};return R.add(t),t.detach=H(e),()=>{t.detach(),R.delete(t)}}function W(){R.forEach(e=>{e.detach(),e.detach=H(e.handlers)})}function G(t,n){let r=I?.auth?.token;return I&&r===t&&L===F?(n&&U(n),I):(I&&$(),I=(0,e.io)(F,{transports:[`websocket`],upgrade:!1,auth:{token:t}}),L=F,I.on(`connect`,()=>{B=z,z=!0}),W(),n&&U(n),I)}function K(){return I}function q(e,t,n){return I?.connected?(n?I.emit(e,t,n):I.emit(e,t),{ok:!0,status:`EMITTED`}):{ok:!1,status:`DISCONNECTED`}}function J(e,t){return q(`conversation:create`,e,t)}function Y(e){return q(`conversation:subscribe`,{conversationId:e})}function X(e){return q(`conversation:unsubscribe`,{conversationId:e})}function Z(e,t){return q(`message:send`,e,t)}function Q(e){return q(`message:reaction:apply`,e)}function ne(e){return q(`message:reaction:remove`,e)}function re(e,t){return q(`message:pin`,e,t)}function ie(e,t){return q(`message:forward`,e,t)}function ae(e,t){return q(`conversation:read`,e,t)}function oe(e){return q(`typing:start`,e)}function se(e){return q(`typing:stop`,e)}function $(){I&&=(I.removeAllListeners(),I.disconnect(),null),L=``,z=!1,B=!1}exports.ChatApiError=r,exports.addConversationMember=y,exports.addConversationMembers=b,exports.configureChatApi=a,exports.configureSocket=V,exports.connectSocket=G,exports.createConversation=ee,exports.deleteConversation=v,exports.deleteConversationMember=C,exports.disconnectSocket=$,exports.emitConversationRead=ae,exports.emitCreateConversation=J,exports.emitMessageForward=ie,exports.emitMessagePin=re,exports.emitMessageReactionApply=Q,exports.emitMessageReactionRemove=ne,exports.emitMessageSend=Z,exports.emitTypingStart=oe,exports.emitTypingStop=se,exports.getConversationArchive=M,exports.getConversationById=h,exports.getConversationMembers=S,exports.getConversationsByUser=m,exports.getDepartmentsByBranch=p,exports.getLatestMessages=T,exports.getMediaUrl=s,exports.getMessageReactions=k,exports.getMessageSystemMembers=te,exports.getMessageWindowPage=D,exports.getMessagesAround=O,exports.getPinnedMessages=A,exports.getSocket=K,exports.getUserBranches=f,exports.getUserById=u,exports.getUsers=d,exports.leaveConversation=w,exports.removeConversationMembers=x,exports.removeMessage=E,exports.resolveMediaUrl=c,exports.searchConversationMessages=j,exports.setConversationPinned=_,exports.subscribeConversation=Y,exports.subscribeSocketHandlers=U,exports.unsubscribeConversation=X,exports.updateConversation=g,exports.uploadGroupAvatar=P,exports.uploadMedia=N;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("socket.io-client");function t(e){return e.map(([e,t])=>`${n(e)}=${n(String(t))}`).join(`&`)}function n(e){return encodeURIComponent(e).replace(/[!'()~]/g,e=>`%${e.charCodeAt(0).toString(16).toUpperCase()}`).replace(/%20/g,`+`)}var r=class extends Error{constructor(e,t,n){super(e),this.status=t,this.code=n,this.name=`ChatApiError`}},i={apiBaseUrl:``,getAccessToken:()=>null};function a(e){i=e}var o=e=>`${i.apiBaseUrl}${e.startsWith(`/`)?e:`/${e}`}`,s=e=>o(`/data/docs/${e}`),c=(e,t)=>e?/^https?:\/\//i.test(e)?e:o(e):t?s(t):null;async function l(e,t={}){let n=new Headers(t.headers),a=i.getAccessToken(),s=t.auth!==!1,c={...t};delete c.auth,t.body instanceof FormData||n.set(`Content-Type`,`application/json`),s&&a&&n.set(`Authorization`,`Bearer ${a}`);let l=await fetch(o(e),{...c,headers:n}),u=l.headers.get(`content-type`)?.includes(`application/json`)?await l.json():null;if(!l.ok){let e=u;throw new r(e?.message??`Request failed with status ${l.status}`,l.status,e?.code)}return u}function u(e){return l(`/users/${e}`)}function d(e={}){let n=[];e.cursor&&n.push([`cursor`,e.cursor]),e.limit&&n.push([`limit`,String(e.limit)]),e.search&&n.push([`search`,e.search]),e.departmentId&&n.push([`departmentId`,e.departmentId]),e.branchId&&n.push([`branchId`,e.branchId]),e.workStatus?.forEach(e=>n.push([`workStatus`,e]));let r=t(n);return l(r?`/users?${r}`:`/users`)}function f(){return l(`/users/branches`)}function p(e){return l(`/departments/by-branch/${e}`)}function m(){return l(`/conversations`,{method:`GET`,auth:!0})}function h(e){return l(`/conversations/${e}`)}function ee(e){return l(`/conversations`,{method:`POST`,body:JSON.stringify(e)})}function g(e,t){return l(`/conversations/${e}`,{method:`PATCH`,body:JSON.stringify(t)})}function _(e,t){return l(`/conversations/${e}/pin`,{method:`PATCH`,body:JSON.stringify({pinned:t})})}function v(e){return l(`/conversations/${e}`,{method:`DELETE`})}function y(e,t){return l(`/conversations/${e}/members`,{method:`POST`,body:JSON.stringify({userId:t})})}function b(e,t){return l(`/conversations/${e}/members`,{method:`POST`,body:JSON.stringify({userIds:t})})}function x(e,t){return l(`/conversations/${e}/members`,{method:`DELETE`,body:JSON.stringify({userIds:t})})}function te(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.cursorPosition!==void 0&&n.cursorPosition!==null&&r.push([`cursorPosition`,String(n.cursorPosition)]),l(`/messages/${e}/system-members?${t(r)}`)}function S(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.cursor&&r.push([`cursor`,String(n.cursor)]),n.search?.trim()&&r.push([`search`,n.search.trim()]),l(`/conversations/${e}/members?${t(r)}`)}function C(e,t){return l(`/conversations/${e}/members/${t}`,{method:`DELETE`})}function w(e,t){return l(`/conversations/${e}/leave`,{method:`PATCH`,body:JSON.stringify({nextOwnerId:t})})}function T(e){return l(`/messages/conversation/${e}/latest`)}function E(e,t){return l(`/messages/conversation/${e}/${t}`,{method:`DELETE`})}function D(e,n={}){let r=[],i=n.beforeSequence!==void 0&&n.beforeSequence!==null,a=n.afterSequence!==void 0&&n.afterSequence!==null;if(i===a)throw Error(`Message history requires exactly one cursor direction`);return i&&r.push([`beforeSequence`,String(n.beforeSequence)]),a&&r.push([`afterSequence`,String(n.afterSequence)]),r.push([`limit`,String(n.limit??20)]),l(`/messages/conversation/${e}?${t(r)}`)}function O(e,t){return l(`/messages/conversation/${e}/around/${t}`)}function k(e,n={}){let r=[[`limit`,String(n.limit??30)]];return n.type&&r.push([`type`,n.type]),n.cursorUpdatedAt&&n.cursorUserId&&(r.push([`cursorUpdatedAt`,n.cursorUpdatedAt]),r.push([`cursorUserId`,n.cursorUserId])),l(`/messages/${e}/reactions?${t(r)}`)}function A(e){return l(`/messages/conversation/${e}/pinned`)}function j(e,n={}){let r=String(n.q??``).trim();if(!r)throw Error(`Search keyword is required`);let i=[[`q`,r],[`messageLimit`,String(n.messageLimit??20)],[`documentLimit`,String(n.documentLimit??20)]];return n.messageBeforeSequence&&i.push([`messageBeforeSequence`,String(n.messageBeforeSequence)]),n.documentBeforeSequence&&i.push([`documentBeforeSequence`,String(n.documentBeforeSequence)]),n.senderId&&i.push([`senderId`,n.senderId]),n.fromDate&&i.push([`fromDate`,n.fromDate]),n.toDate&&i.push([`toDate`,n.toDate]),l(`/messages/conversation/${e}/search?${t(i)}`)}function M(e,n){let r=[[`type`,n.type]];return n.month&&r.push([`month`,n.month]),n.from&&r.push([`from`,n.from]),n.to&&r.push([`to`,n.to]),n.senderId&&r.push([`senderId`,n.senderId]),l(`/messages/conversation/${e}/archive?${t(r)}`)}async function N(e,t,n){let r=new FormData;r.append(`file`,e),r.append(`conversationId`,t),n&&r.append(`asDocument`,`true`);let i=await l(`/media/uploads`,{method:`POST`,body:r}),a=i?.id;if(!a)throw Error(`Not found media-id response`);return{mediaId:a,attachmentUrl:i?.url??null,response:i}}async function P(e,t){let{mediaId:n}=await N(e,t);return g(t,{avatarUrl:`/data/docs/${n}`})}var F=``,I=null,L=``,R=new Set,z=!1,B=!1;function V(e){F=e}function H(e){let t=I;if(!t)return()=>void 0;let n=[],r=(e,r)=>{r&&(t.on(e,r),n.push({event:e,listener:r}))};if(r(`conversation:new`,e.onConversationNew),r(`conversation:deleted`,e.onConversationDeleted),r(`conversation:updated`,e.onConversationUpdated),r(`conversation:pinned`,e.onConversationPinned),r(`conversation:membership:changed`,e.onConversationMembershipChanged),e.onMessageSent&&(r(`message:sent`,e.onMessageSent),r(`message:ack`,e.onMessageSent)),e.onMessageNew&&(r(`message:new`,e.onMessageNew),r(`message:created`,e.onMessageNew)),r(`message:removed`,e.onMessageRemoved),r(`message:reaction:updated`,e.onMessageReactionUpdated),r(`message:pinned`,e.onMessagePinned),r(`conversation:read`,e.onConversationRead),r(`conversation:unread`,e.onConversationUnread),r(`presence:changed`,e.onPresenceChanged),r(`typing:start`,e.onTypingStart),r(`typing:stop`,e.onTypingStop),(e.onConnected||e.onConnectionRestored)&&r(`connect`,()=>{e.onConnected?.(),B&&e.onConnectionRestored?.()}),r(`disconnect`,e.onConnectionLost),e.onConnectFailed){let t=t=>{e.onConnectFailed?.(t)};r(`connect_error`,t),r(`error`,t),r(`exception`,t)}return()=>{n.forEach(({event:e,listener:n})=>t.off(e,n))}}function U(e){let t={handlers:e,detach:()=>void 0};return R.add(t),t.detach=H(e),()=>{t.detach(),R.delete(t)}}function W(){R.forEach(e=>{e.detach(),e.detach=H(e.handlers)})}function G(t,n){let r=I?.auth?.token;return I&&r===t&&L===F?(n&&U(n),I):(I&&$(),I=(0,e.io)(F,{transports:[`websocket`],upgrade:!1,auth:{token:t}}),L=F,I.on(`connect`,()=>{B=z,z=!0}),W(),n&&U(n),I)}function K(){return I}function q(e,t,n){return I?.connected?(n?I.emit(e,t,n):I.emit(e,t),{ok:!0,status:`EMITTED`}):{ok:!1,status:`DISCONNECTED`}}function J(e,t){return q(`conversation:create`,e,t)}function Y(e){return q(`conversation:subscribe`,{conversationId:e})}function X(e){return q(`conversation:unsubscribe`,{conversationId:e})}function Z(e,t){return q(`message:send`,e,t)}function Q(e){return q(`message:reaction:apply`,e)}function ne(e){return q(`message:reaction:remove`,e)}function re(e,t){return q(`message:pin`,e,t)}function ie(e,t){return q(`message:forward`,e,t)}function ae(e,t){return q(`conversation:read`,e,t)}function oe(e){return q(`typing:start`,e)}function se(e){return q(`typing:stop`,e)}function $(){I&&=(I.removeAllListeners(),I.disconnect(),null),L=``,z=!1,B=!1}exports.ChatApiError=r,exports.addConversationMember=y,exports.addConversationMembers=b,exports.configureChatApi=a,exports.configureSocket=V,exports.connectSocket=G,exports.createConversation=ee,exports.deleteConversation=v,exports.deleteConversationMember=C,exports.disconnectSocket=$,exports.emitConversationRead=ae,exports.emitCreateConversation=J,exports.emitMessageForward=ie,exports.emitMessagePin=re,exports.emitMessageReactionApply=Q,exports.emitMessageReactionRemove=ne,exports.emitMessageSend=Z,exports.emitTypingStart=oe,exports.emitTypingStop=se,exports.getConversationArchive=M,exports.getConversationById=h,exports.getConversationMembers=S,exports.getConversationsByUser=m,exports.getDepartmentsByBranch=p,exports.getLatestMessages=T,exports.getMediaUrl=s,exports.getMessageReactions=k,exports.getMessageSystemMembers=te,exports.getMessageWindowPage=D,exports.getMessagesAround=O,exports.getPinnedMessages=A,exports.getSocket=K,exports.getUserBranches=f,exports.getUserById=u,exports.getUsers=d,exports.leaveConversation=w,exports.removeConversationMembers=x,exports.removeMessage=E,exports.resolveMediaUrl=c,exports.searchConversationMessages=j,exports.setConversationPinned=_,exports.subscribeConversation=Y,exports.subscribeSocketHandlers=U,exports.unsubscribeConversation=X,exports.updateConversation=g,exports.uploadGroupAvatar=P,exports.uploadMedia=N;
package/dist/index.js CHANGED
@@ -38,7 +38,7 @@ function u(e) {
38
38
  }
39
39
  function d(e = {}) {
40
40
  let n = [];
41
- e.cursor && n.push(["cursor", e.cursor]), e.limit && n.push(["limit", String(e.limit)]), e.search && n.push(["search", e.search]), e.departmentId && n.push(["departmentId", e.departmentId]), e.branchId && n.push(["branchId", e.branchId]);
41
+ e.cursor && n.push(["cursor", e.cursor]), e.limit && n.push(["limit", String(e.limit)]), e.search && n.push(["search", e.search]), e.departmentId && n.push(["departmentId", e.departmentId]), e.branchId && n.push(["branchId", e.branchId]), e.workStatus?.forEach((e) => n.push(["workStatus", e]));
42
42
  let r = t(n);
43
43
  return l(r ? `/users?${r}` : "/users");
44
44
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@medipha/chat-core",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Shared REST and Socket.IO client for Meditech chat applications.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",