@droz-js/sdk 0.3.16 → 0.3.18

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@droz-js/sdk",
3
3
  "description": "Droz SDK",
4
- "version": "0.3.16",
4
+ "version": "0.3.18",
5
5
  "private": false,
6
6
  "exports": {
7
7
  ".": "./src/index.js",
@@ -5,6 +5,7 @@ export interface Service {
5
5
  type: string;
6
6
  endpoint: string;
7
7
  }
8
+ type events = 'error';
8
9
  declare class TenantConfig {
9
10
  readonly tenant: string;
10
11
  private readonly services;
@@ -26,9 +27,9 @@ export declare class DrozSdk {
26
27
  static getTenantConfig(customTenant?: string): Promise<TenantConfig>;
27
28
  private static getOrDiscoverTenantConfig;
28
29
  private static discoverTenantConfig;
29
- static on<T>(event: string, listener: (e: T) => void): void;
30
- static off<T>(event: string, listener: (e: T) => void): void;
31
- static emit(event: string, data: any): void;
30
+ static on<T>(event: events, listener: (e: T) => void): void;
31
+ static off<T>(event: events, listener: (e: T) => void): void;
32
+ static emit(event: events, data: any): void;
32
33
  private static addEventListener;
33
34
  private static removeEventListener;
34
35
  }
package/src/nucleus.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { CreatePresignedUploadUrlInput } from './sdks/nucleus';
2
2
  export * from './sdks/nucleus';
3
+ type OnProgress = (progress: number) => void;
3
4
  declare const Nucleus_base: new (options?: import("./client/http").HttpClientOptions) => {
4
5
  readonly http: any;
5
6
  forTenant(tenant: string): any;
@@ -193,7 +194,8 @@ declare const Nucleus_base: new (options?: import("./client/http").HttpClientOpt
193
194
  }>, options?: unknown): Promise<import("./sdks/nucleus").CreatePresignedUploadUrlMutation>;
194
195
  };
195
196
  export declare class Nucleus extends Nucleus_base {
196
- uploadBlob(fileName: string, blob: Blob): Promise<string>;
197
- uploadFile(blob: File): Promise<string>;
197
+ uploadBlob(fileName: string, blob: Blob, onProgress: OnProgress): Promise<string>;
198
+ uploadFile(blob: File, onProgress: OnProgress): Promise<string>;
198
199
  private upload;
200
+ private post;
199
201
  }
package/src/nucleus.js CHANGED
@@ -15,29 +15,38 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.Nucleus = void 0;
18
+ const config_1 = require("./client/config");
18
19
  const helpers_1 = require("./client/helpers");
19
20
  const http_1 = require("./client/http");
20
21
  const nucleus_1 = require("./sdks/nucleus");
21
22
  __exportStar(require("./sdks/nucleus"), exports);
22
23
  class Nucleus extends (0, http_1.HttpClientBuilder)(nucleus_1.serviceName, nucleus_1.getSdk) {
23
- async uploadBlob(fileName, blob) {
24
+ async uploadBlob(fileName, blob, onProgress) {
24
25
  return await this.upload({
25
26
  fileName,
26
27
  blob,
27
28
  contentType: blob.type,
28
- contentLength: blob.size
29
+ contentLength: blob.size,
30
+ onProgress
31
+ }).catch(error => {
32
+ config_1.DrozSdk.emit('error', error);
33
+ throw error;
29
34
  });
30
35
  }
31
- async uploadFile(blob) {
36
+ async uploadFile(blob, onProgress) {
32
37
  return await this.upload({
33
38
  blob,
34
39
  fileName: blob.name,
35
40
  contentType: blob.type,
36
- contentLength: blob.size
41
+ contentLength: blob.size,
42
+ onProgress
43
+ }).catch(error => {
44
+ config_1.DrozSdk.emit('error', error);
45
+ throw error;
37
46
  });
38
47
  }
39
48
  async upload(upload) {
40
- const { blob, ...input } = upload;
49
+ const { blob, onProgress, ...input } = upload;
41
50
  const { createPresignedUploadUrl } = await this.createPresignedUploadUrl({ input });
42
51
  if (createPresignedUploadUrl) {
43
52
  const { method, url, fields, cdnUrl } = createPresignedUploadUrl;
@@ -46,14 +55,38 @@ class Nucleus extends (0, http_1.HttpClientBuilder)(nucleus_1.serviceName, nucle
46
55
  body.append(key, value);
47
56
  });
48
57
  body.append('file', blob);
49
- const response = await fetch(url, { method, body });
58
+ const response = await this.post(method, url, body, onProgress);
50
59
  if (response.ok) {
51
60
  return cdnUrl;
52
61
  }
53
- const text = await response.text();
54
- throw new helpers_1.SdkError('500-upload-failed', text);
62
+ throw new helpers_1.SdkError('500-upload-failed', response.text);
55
63
  }
56
64
  throw new helpers_1.SdkError('500-upload-failed', 'No response from server');
57
65
  }
66
+ async post(method, url, body, onProgress) {
67
+ return new Promise((resolve, reject) => {
68
+ const xhr = new XMLHttpRequest();
69
+ if (onProgress) {
70
+ xhr.upload.addEventListener('progress', evt => {
71
+ onProgress(evt.loaded / evt.total);
72
+ });
73
+ }
74
+ xhr.addEventListener('load', () => {
75
+ const ok = xhr.status >= 200 && xhr.status < 300;
76
+ const text = xhr.responseText;
77
+ if (onProgress)
78
+ onProgress(1); // Ensure progress is 100% after load
79
+ resolve({ ok, text });
80
+ });
81
+ xhr.addEventListener('error', () => {
82
+ reject(new helpers_1.SdkError('500-upload-failed', 'Upload failed'));
83
+ });
84
+ xhr.addEventListener('abort', () => {
85
+ reject(new helpers_1.SdkError('400-upload-aborted', 'Upload aborted by user'));
86
+ });
87
+ xhr.open(method, url, true);
88
+ xhr.send(body);
89
+ });
90
+ }
58
91
  }
59
92
  exports.Nucleus = Nucleus;
@@ -284,6 +284,7 @@ export type TicketMessage = {
284
284
  filename?: Maybe<Scalars['String']['output']>;
285
285
  from: TicketMessageRecipient;
286
286
  id: Scalars['ID']['output'];
287
+ size?: Maybe<Scalars['Float']['output']>;
287
288
  ticketId: Scalars['ID']['output'];
288
289
  to: TicketMessageRecipient;
289
290
  updatedAt: Scalars['DateTime']['output'];
@@ -389,7 +390,7 @@ export type TicketFragment = (Pick<Ticket, 'channelId' | 'id' | 'state' | 'statu
389
390
  customer: CustomerFragment;
390
391
  triggerApp?: Maybe<TicketTriggerAppFragment>;
391
392
  });
392
- export type TicketMessageFragment = Pick<TicketMessage, 'id' | 'ticketId' | 'from' | 'to' | 'contentType' | 'content' | 'filename' | 'createdAt' | 'updatedAt'>;
393
+ export type TicketMessageFragment = Pick<TicketMessage, 'id' | 'ticketId' | 'from' | 'to' | 'contentType' | 'content' | 'filename' | 'size' | 'createdAt' | 'updatedAt'>;
393
394
  export type GetTicketQueryVariables = Exact<{
394
395
  id: Scalars['ID']['input'];
395
396
  }>;
@@ -527,7 +528,7 @@ export declare const DrozChatAgentFragmentDoc = "\n fragment drozChatAgent on
527
528
  export declare const CustomerFragmentDoc = "\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n ";
528
529
  export declare const TicketTriggerAppFragmentDoc = "\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
529
530
  export declare const TicketFragmentDoc = "\n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
530
- export declare const TicketMessageFragmentDoc = "\n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n createdAt\n updatedAt\n}\n ";
531
+ export declare const TicketMessageFragmentDoc = "\n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n size\n createdAt\n updatedAt\n}\n ";
531
532
  export declare const GetDrozChatChannelDocument = "\n query getDrozChatChannel($id: ID!) {\n getDrozChatChannel(id: $id) {\n ...drozChatChannel\n }\n}\n \n fragment drozChatChannel on DrozChatChannel {\n id\n name\n createdAt\n updatedAt\n}\n ";
532
533
  export declare const ListDrozChatChannelsDocument = "\n query listDrozChatChannels {\n listDrozChatChannels {\n ...drozChatChannel\n }\n}\n \n fragment drozChatChannel on DrozChatChannel {\n id\n name\n createdAt\n updatedAt\n}\n ";
533
534
  export declare const CreateDrozChatChannelDocument = "\n mutation createDrozChatChannel($input: CreateDrozChatChannelInput!) {\n createDrozChatChannel(input: $input) {\n ...drozChatChannel\n }\n}\n \n fragment drozChatChannel on DrozChatChannel {\n id\n name\n createdAt\n updatedAt\n}\n ";
@@ -538,11 +539,11 @@ export declare const ListTicketsDocument = "\n query listTickets($state: Tick
538
539
  export declare const ListTicketsInQueueDocument = "\n query listTicketsInQueue($next: Base64) {\n listTicketsInQueue(next: $next) {\n nodes {\n ...ticket\n }\n pageInfo {\n hasNext\n next\n }\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
539
540
  export declare const ListTicketsInProgressMineDocument = "\n query listTicketsInProgressMine($next: Base64) {\n listTicketsInProgressMine(next: $next) {\n nodes {\n ...ticket\n }\n pageInfo {\n hasNext\n next\n }\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
540
541
  export declare const ListTicketsClosedDocument = "\n query listTicketsClosed($next: Base64) {\n listTicketsClosed(next: $next) {\n nodes {\n ...ticket\n }\n pageInfo {\n hasNext\n next\n }\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
541
- export declare const ListTicketMessagesDocument = "\n query listTicketMessages($ticketId: ID!, $next: Base64) {\n listTicketMessages(ticketId: $ticketId, next: $next) {\n pageInfo {\n hasNext\n next\n }\n nodes {\n ...ticketMessage\n }\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n createdAt\n updatedAt\n}\n ";
542
+ export declare const ListTicketMessagesDocument = "\n query listTicketMessages($ticketId: ID!, $next: Base64) {\n listTicketMessages(ticketId: $ticketId, next: $next) {\n pageInfo {\n hasNext\n next\n }\n nodes {\n ...ticketMessage\n }\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n size\n createdAt\n updatedAt\n}\n ";
542
543
  export declare const CreateTicketDocument = "\n mutation createTicket($input: CreateTicketInput!) {\n createTicket(input: $input) {\n ...ticket\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
543
544
  export declare const MarkTicketMessagesAsReadDocument = "\n mutation markTicketMessagesAsRead($input: MarkTicketMessagesAsReadInput!) {\n markTicketMessagesAsRead(input: $input)\n}\n ";
544
- export declare const CreateTicketMessageDocument = "\n mutation createTicketMessage($input: CreateTicketMessageInput!) {\n createTicketMessage(input: $input) {\n ...ticketMessage\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n createdAt\n updatedAt\n}\n ";
545
- export declare const CreateTicketMessageForStorageDocument = "\n mutation createTicketMessageForStorage($input: CreateTicketMessageForStorageInput!) {\n createTicketMessageForStorage(input: $input) {\n ...ticketMessage\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n createdAt\n updatedAt\n}\n ";
545
+ export declare const CreateTicketMessageDocument = "\n mutation createTicketMessage($input: CreateTicketMessageInput!) {\n createTicketMessage(input: $input) {\n ...ticketMessage\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n size\n createdAt\n updatedAt\n}\n ";
546
+ export declare const CreateTicketMessageForStorageDocument = "\n mutation createTicketMessageForStorage($input: CreateTicketMessageForStorageInput!) {\n createTicketMessageForStorage(input: $input) {\n ...ticketMessage\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n size\n createdAt\n updatedAt\n}\n ";
546
547
  export declare const AssignTicketDocument = "\n mutation assignTicket($input: AssignTicketInput!) {\n assignTicket(input: $input) {\n ...ticket\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
547
548
  export declare const AssignTicketMyselfDocument = "\n mutation assignTicketMyself($input: AssignTicketMyselfInput!) {\n assignTicketMyself(input: $input) {\n ...ticket\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
548
549
  export declare const UnassignTicketDocument = "\n mutation unassignTicket($input: UnassignTicketInput!) {\n unassignTicket(input: $input) {\n ...ticket\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
@@ -550,7 +551,7 @@ export declare const CloseTicketDocument = "\n mutation closeTicket($input: C
550
551
  export declare const OnTicketInQueueDocument = "\n subscription onTicketInQueue {\n onTicketInQueue {\n ticket {\n ...ticket\n }\n action\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
551
552
  export declare const OnTicketInProgressMineDocument = "\n subscription onTicketInProgressMine {\n onTicketInProgressMine {\n ticket {\n ...ticket\n }\n action\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
552
553
  export declare const OnTicketClosedDocument = "\n subscription onTicketClosed {\n onTicketClosed {\n ticket {\n ...ticket\n }\n action\n }\n}\n \n fragment ticket on Ticket {\n channelId\n id\n state\n status\n priority\n assignee {\n ...drozChatAgent\n }\n customer {\n ...customer\n }\n triggerApp {\n ...ticketTriggerApp\n }\n messagesCount\n lastMessage\n lastMessageAt\n unreadMessagesCount\n createdAt\n updatedAt\n}\n \n fragment drozChatAgent on DrozChatAgent {\n id\n name\n}\n \n\n fragment customer on DrozChatCustomer {\n id\n name\n email\n phone\n createdAt\n updatedAt\n}\n \n\n fragment ticketTriggerApp on TicketTriggerApp {\n drn\n name\n appId\n appName\n}\n ";
553
- export declare const OnTicketMessageDocument = "\n subscription onTicketMessage($ticketId: ID!) {\n onTicketMessage(ticketId: $ticketId) {\n message {\n ...ticketMessage\n }\n action\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n createdAt\n updatedAt\n}\n ";
554
+ export declare const OnTicketMessageDocument = "\n subscription onTicketMessage($ticketId: ID!) {\n onTicketMessage(ticketId: $ticketId) {\n message {\n ...ticketMessage\n }\n action\n }\n}\n \n fragment ticketMessage on TicketMessage {\n id\n ticketId\n from\n to\n contentType\n content\n filename\n size\n createdAt\n updatedAt\n}\n ";
554
555
  export type Requester<C = {}, E = unknown> = <R, V>(doc: string, vars?: V, options?: C) => Promise<R> | AsyncIterableIterator<R>;
555
556
  export declare function getSdk<C, E>(requester: Requester<C, E>): {
556
557
  getDrozChatChannel(variables: GetDrozChatChannelQueryVariables, options?: C): Promise<GetDrozChatChannelQuery>;
@@ -119,6 +119,7 @@ exports.TicketMessageFragmentDoc = `
119
119
  contentType
120
120
  content
121
121
  filename
122
+ size
122
123
  createdAt
123
124
  updatedAt
124
125
  }