@whitewall/blip-sdk 0.0.1

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.
Files changed (62) hide show
  1. package/README.md +16 -0
  2. package/dist/client.d.ts +7 -0
  3. package/dist/client.js +12 -0
  4. package/dist/client.js.map +1 -0
  5. package/dist/index.d.ts +6 -0
  6. package/dist/index.js +10 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/namespaces/account.d.ts +45 -0
  9. package/dist/namespaces/account.js +152 -0
  10. package/dist/namespaces/account.js.map +1 -0
  11. package/dist/namespaces/builder.d.ts +7 -0
  12. package/dist/namespaces/builder.js +24 -0
  13. package/dist/namespaces/builder.js.map +1 -0
  14. package/dist/namespaces/desk.d.ts +26 -0
  15. package/dist/namespaces/desk.js +43 -0
  16. package/dist/namespaces/desk.js.map +1 -0
  17. package/dist/namespaces/media.d.ts +6 -0
  18. package/dist/namespaces/media.js +18 -0
  19. package/dist/namespaces/media.js.map +1 -0
  20. package/dist/namespaces/namespace.d.ts +21 -0
  21. package/dist/namespaces/namespace.js +60 -0
  22. package/dist/namespaces/namespace.js.map +1 -0
  23. package/dist/namespaces/whatsapp.d.ts +10 -0
  24. package/dist/namespaces/whatsapp.js +36 -0
  25. package/dist/namespaces/whatsapp.js.map +1 -0
  26. package/dist/sender/bliperror.d.ts +5 -0
  27. package/dist/sender/bliperror.js +12 -0
  28. package/dist/sender/bliperror.js.map +1 -0
  29. package/dist/sender/httpsender.d.ts +10 -0
  30. package/dist/sender/httpsender.js +54 -0
  31. package/dist/sender/httpsender.js.map +1 -0
  32. package/dist/sender/sender.d.ts +5 -0
  33. package/dist/sender/sender.js +3 -0
  34. package/dist/sender/sender.js.map +1 -0
  35. package/dist/types/account.d.ts +20 -0
  36. package/dist/types/account.js +3 -0
  37. package/dist/types/account.js.map +1 -0
  38. package/dist/types/command.d.ts +26 -0
  39. package/dist/types/command.js +3 -0
  40. package/dist/types/command.js.map +1 -0
  41. package/dist/types/desk.d.ts +38 -0
  42. package/dist/types/desk.js +14 -0
  43. package/dist/types/desk.js.map +1 -0
  44. package/dist/types/envelope.d.ts +8 -0
  45. package/dist/types/envelope.js +3 -0
  46. package/dist/types/envelope.js.map +1 -0
  47. package/dist/types/index.d.ts +6 -0
  48. package/dist/types/index.js +10 -0
  49. package/dist/types/index.js.map +1 -0
  50. package/dist/types/message.d.ts +67 -0
  51. package/dist/types/message.js +13 -0
  52. package/dist/types/message.js.map +1 -0
  53. package/dist/types/node.d.ts +12 -0
  54. package/dist/types/node.js +30 -0
  55. package/dist/types/node.js.map +1 -0
  56. package/dist/utils/random.d.ts +1 -0
  57. package/dist/utils/random.js +8 -0
  58. package/dist/utils/random.js.map +1 -0
  59. package/dist/utils/uri.d.ts +4 -0
  60. package/dist/utils/uri.js +28 -0
  61. package/dist/utils/uri.js.map +1 -0
  62. package/package.json +21 -0
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ [![Build Status](https://github.com/whitewall-dev/blip-sdk/actions/workflows/publish.yml/badge.svg)](https://github.com/whitewall-dev/blip-sdk/actions/workflows/publish.yml)
2
+ [![npm](https://img.shields.io/npm/v/@whitewall/blip-sdk.svg)](https://npmjs.com/package/@whitewall/blip-sdk)
3
+
4
+ # blip-sdk
5
+
6
+ A simple blip API wrapper
7
+
8
+ ## API Usage
9
+
10
+ ```js
11
+ import { BlipClient, HttpSender } from '@whitewall/blip-sdk'
12
+
13
+ const client = new BlipClient(HttpSender.login(process.env.BLIP_BOT_IDENTIFIER, BLIP_BOT_ACCESSKEY, BLIP_TENANT_ID))
14
+ await client.account.setBucket('bucketitem', 'value')
15
+ console.log(await client.account.getBucket('bucketitem'))
16
+ ```
@@ -0,0 +1,7 @@
1
+ import { AccountNamespace } from './namespaces/account';
2
+ import { Sender } from './sender/sender';
3
+ export declare class BlipClient {
4
+ readonly sender: Sender;
5
+ constructor(sender: Sender);
6
+ readonly account: AccountNamespace;
7
+ }
package/dist/client.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlipClient = void 0;
4
+ const account_1 = require("./namespaces/account");
5
+ class BlipClient {
6
+ constructor(sender) {
7
+ this.sender = sender;
8
+ this.account = new account_1.AccountNamespace(this.sender);
9
+ }
10
+ }
11
+ exports.BlipClient = BlipClient;
12
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";;;AAAA,kDAAuD;AAGvD,MAAa,UAAU;IACnB,YAA4B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAE1B,YAAO,GAAG,IAAI,0BAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAFd,CAAC;CAGjD;AAJD,gCAIC"}
@@ -0,0 +1,6 @@
1
+ export * from './client';
2
+ export * from './utils/uri';
3
+ export * from './types';
4
+ export * from './sender/sender';
5
+ export * from './sender/bliperror';
6
+ export * from './sender/httpsender';
package/dist/index.js ADDED
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./client"), exports);
5
+ tslib_1.__exportStar(require("./utils/uri"), exports);
6
+ tslib_1.__exportStar(require("./types"), exports);
7
+ tslib_1.__exportStar(require("./sender/sender"), exports);
8
+ tslib_1.__exportStar(require("./sender/bliperror"), exports);
9
+ tslib_1.__exportStar(require("./sender/httpsender"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAwB;AACxB,sDAA2B;AAC3B,kDAAuB;AACvB,0DAA+B;AAC/B,6DAAkC;AAClC,8DAAmC"}
@@ -0,0 +1,45 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Identity } from '../types';
3
+ import { Contact, ThreadItem } from '../types/account';
4
+ import { ConsumeOptions, Namespace } from './namespace';
5
+ export declare class AccountNamespace extends Namespace {
6
+ constructor(sender: Sender);
7
+ getAccount(opts?: ConsumeOptions): Promise<{
8
+ identity: Identity;
9
+ fullName: string;
10
+ photoUri: string;
11
+ email: string;
12
+ extras?: Record<string, string | null>;
13
+ creationDate: string;
14
+ }>;
15
+ getContext(contact: Identity, key: string, opts?: ConsumeOptions): Promise<string | undefined>;
16
+ setContext(contact: Identity, key: string, value: string, ttlSeconds?: number, opts?: ConsumeOptions): Promise<void>;
17
+ deleteContext(contact: Identity, key: string, opts?: ConsumeOptions): Promise<void>;
18
+ getContacts(opts?: ConsumeOptions): Promise<Contact[]>;
19
+ getContact(contact: Identity, opts?: ConsumeOptions): Promise<Contact>;
20
+ setContact(contact: Contact, opts?: ConsumeOptions): Promise<void>;
21
+ mergeContact(contact: Partial<Contact> & Pick<Contact, 'identity'>, opts?: ConsumeOptions): Promise<void>;
22
+ deleteContact(contact: Identity, opts?: ConsumeOptions): Promise<void>;
23
+ getBuckets(opts?: ConsumeOptions): Promise<string[]>;
24
+ getBucket<T = string>(key: string, opts?: ConsumeOptions): Promise<T | undefined>;
25
+ setBucket<T = string>(key: string, value: T, ttlSeconds?: number, opts?: ConsumeOptions): Promise<void>;
26
+ deleteBucket(key: string, opts?: ConsumeOptions): Promise<void>;
27
+ getCallerConfigurations(opts?: ConsumeOptions): Promise<{
28
+ name: string;
29
+ value: string;
30
+ }[]>;
31
+ getThread(contact: Identity, query?: {
32
+ messageId?: string;
33
+ storageDate?: string;
34
+ direction?: 'asc' | 'desc';
35
+ refreshExpiredMedia?: boolean;
36
+ getFromOriginator?: boolean;
37
+ }, opts?: ConsumeOptions): Promise<ThreadItem[]>;
38
+ getMergedThreads(contact: Identity, query?: {
39
+ messageId?: string;
40
+ storageDate?: string;
41
+ direction?: 'asc' | 'desc';
42
+ refreshExpiredMedia?: boolean;
43
+ getFromOriginator?: boolean;
44
+ }, opts?: ConsumeOptions): Promise<ThreadItem[]>;
45
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AccountNamespace = void 0;
4
+ const bliperror_1 = require("../sender/bliperror");
5
+ const uri_1 = require("../utils/uri");
6
+ const namespace_1 = require("./namespace");
7
+ class AccountNamespace extends namespace_1.Namespace {
8
+ constructor(sender) {
9
+ super(sender, 'postmaster@msging.net');
10
+ }
11
+ async getAccount(opts) {
12
+ return this.sendCommand({
13
+ method: 'get',
14
+ uri: (0, uri_1.uri) `/account`,
15
+ }, opts);
16
+ }
17
+ async getContext(contact, key, opts) {
18
+ try {
19
+ return await this.sendCommand({
20
+ method: 'get',
21
+ uri: (0, uri_1.uri) `/contexts/${contact}/${key}`,
22
+ }, opts);
23
+ }
24
+ catch (err) {
25
+ if (err instanceof bliperror_1.BlipError && err.code === 67) {
26
+ return undefined;
27
+ }
28
+ throw err;
29
+ }
30
+ }
31
+ async setContext(contact, key, value, ttlSeconds, opts) {
32
+ return this.sendCommand({
33
+ method: 'set',
34
+ uri: (0, uri_1.uri) `/contexts/${contact}/${key}?${{
35
+ expiration: ttlSeconds ? ttlSeconds * 1000 : undefined,
36
+ }}`,
37
+ type: 'text/plain',
38
+ resource: value,
39
+ }, opts);
40
+ }
41
+ async deleteContext(contact, key, opts) {
42
+ return this.sendCommand({
43
+ method: 'delete',
44
+ uri: (0, uri_1.uri) `/contexts/${contact}/${key}`,
45
+ }, opts);
46
+ }
47
+ async getContacts(opts) {
48
+ return this.sendCommand({
49
+ method: 'get',
50
+ uri: (0, uri_1.uri) `/contacts`,
51
+ }, {
52
+ collection: true,
53
+ ...opts,
54
+ });
55
+ }
56
+ async getContact(contact, opts) {
57
+ return this.sendCommand({
58
+ method: 'get',
59
+ uri: (0, uri_1.uri) `/contacts/${contact}`,
60
+ }, opts);
61
+ }
62
+ async setContact(contact, opts) {
63
+ return this.sendCommand({
64
+ method: 'set',
65
+ uri: (0, uri_1.uri) `/contacts`,
66
+ type: 'application/vnd.lime.contact+json',
67
+ resource: contact,
68
+ }, opts);
69
+ }
70
+ async mergeContact(contact, opts) {
71
+ return this.sendCommand({
72
+ method: 'merge',
73
+ uri: (0, uri_1.uri) `/contacts`,
74
+ type: 'application/vnd.lime.contact+json',
75
+ resource: contact,
76
+ }, opts);
77
+ }
78
+ async deleteContact(contact, opts) {
79
+ return this.sendCommand({
80
+ method: 'delete',
81
+ uri: (0, uri_1.uri) `/contacts/${contact}`,
82
+ }, opts);
83
+ }
84
+ async getBuckets(opts) {
85
+ return this.sendCommand({
86
+ method: 'get',
87
+ uri: (0, uri_1.uri) `/buckets`,
88
+ }, {
89
+ collection: true,
90
+ ...opts,
91
+ });
92
+ }
93
+ async getBucket(key, opts) {
94
+ try {
95
+ return await this.sendCommand({
96
+ method: 'get',
97
+ uri: (0, uri_1.uri) `/buckets/${key}`,
98
+ }, opts);
99
+ }
100
+ catch (err) {
101
+ if (err instanceof bliperror_1.BlipError && err.code === 67) {
102
+ return undefined;
103
+ }
104
+ throw err;
105
+ }
106
+ }
107
+ async setBucket(key, value, ttlSeconds, opts) {
108
+ return this.sendCommand({
109
+ method: 'set',
110
+ uri: (0, uri_1.uri) `/buckets/${key}?${{
111
+ expiration: ttlSeconds ? ttlSeconds * 1000 : undefined,
112
+ }}`,
113
+ type: typeof value === 'string' ? 'text/plain' : 'application/json',
114
+ resource: value,
115
+ }, opts);
116
+ }
117
+ async deleteBucket(key, opts) {
118
+ return this.sendCommand({
119
+ method: 'delete',
120
+ uri: (0, uri_1.uri) `/buckets/${key}`,
121
+ }, opts);
122
+ }
123
+ async getCallerConfigurations(opts) {
124
+ return this.sendCommand({
125
+ method: 'get',
126
+ uri: (0, uri_1.uri) `/configuration/caller`,
127
+ }, {
128
+ collection: true,
129
+ ...opts,
130
+ });
131
+ }
132
+ async getThread(contact, query, opts) {
133
+ return this.sendCommand({
134
+ method: 'get',
135
+ uri: (0, uri_1.uri) `/threads/${contact}?${query}`,
136
+ }, {
137
+ collection: true,
138
+ ...opts,
139
+ });
140
+ }
141
+ async getMergedThreads(contact, query, opts) {
142
+ return this.sendCommand({
143
+ method: 'get',
144
+ uri: (0, uri_1.uri) `/threads-merged/${contact}?${query}`,
145
+ }, {
146
+ collection: true,
147
+ ...opts,
148
+ });
149
+ }
150
+ }
151
+ exports.AccountNamespace = AccountNamespace;
152
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/namespaces/account.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Namespace } from './namespace';
3
+ export declare class BuilderNamespace extends Namespace {
4
+ constructor(sender: Sender);
5
+ getFlowId(botIdentifier?: string): Promise<string>;
6
+ getFlowStates(botIdentifier: string): Promise<void>;
7
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BuilderNamespace = void 0;
4
+ const uri_1 = require("../utils/uri");
5
+ const namespace_1 = require("./namespace");
6
+ class BuilderNamespace extends namespace_1.Namespace {
7
+ constructor(sender) {
8
+ super(sender, 'postmaster@builder.msging.net');
9
+ }
10
+ async getFlowId(botIdentifier) {
11
+ return this.sendCommand({
12
+ method: 'get',
13
+ uri: (0, uri_1.uri) `/flow-id?${{ shortName: botIdentifier }}`,
14
+ });
15
+ }
16
+ async getFlowStates(botIdentifier) {
17
+ return this.sendCommand({
18
+ method: 'get',
19
+ uri: (0, uri_1.uri) `/flow/states?${{ shortName: botIdentifier }}`,
20
+ });
21
+ }
22
+ }
23
+ exports.BuilderNamespace = BuilderNamespace;
24
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/namespaces/builder.ts"],"names":[],"mappings":";;;AACA,sCAAkC;AAClC,2CAAuC;AAEvC,MAAa,gBAAiB,SAAQ,qBAAS;IAC3C,YAAY,MAAc;QACtB,KAAK,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,aAAsB;QACzC,OAAO,IAAI,CAAC,WAAW,CAAC;YACpB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE;SACrD,CAAC,CAAA;IACN,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,aAAqB;QAC5C,OAAO,IAAI,CAAC,WAAW,CAAC;YACpB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,EAAE;SACzD,CAAC,CAAA;IACN,CAAC;CACJ;AAlBD,4CAkBC"}
@@ -0,0 +1,26 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Ticket } from '../types';
3
+ import { ConsumeOptions, Namespace } from './namespace';
4
+ export declare class DeskNamespace extends Namespace {
5
+ constructor(sender: Sender);
6
+ getTicket(ticket: string, opts?: ConsumeOptions): Promise<Ticket>;
7
+ getTicketsMetrics(opts?: ConsumeOptions): Promise<{
8
+ maxQueueTime: string;
9
+ maxFirstResponseTime: string;
10
+ avgQueueTime: string;
11
+ avgFirstResponseTime: string;
12
+ avgWaitTime: string;
13
+ avgResponseTime: string;
14
+ avgAttendanceTime: string;
15
+ ticketsPerAttendant: number;
16
+ }>;
17
+ getWaitingTicketsMetrics(opts?: ConsumeOptions): Promise<{
18
+ id: string;
19
+ sequentialId: number;
20
+ team: string;
21
+ queueTime: string;
22
+ }[]>;
23
+ getTickets(filter?: {
24
+ statuses?: string[];
25
+ }, opts?: ConsumeOptions): Promise<Ticket[]>;
26
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeskNamespace = void 0;
4
+ const uri_1 = require("../utils/uri");
5
+ const namespace_1 = require("./namespace");
6
+ class DeskNamespace extends namespace_1.Namespace {
7
+ constructor(sender) {
8
+ super(sender, 'postmaster@desk.msging.net');
9
+ }
10
+ async getTicket(ticket, opts) {
11
+ return this.sendCommand({
12
+ method: 'get',
13
+ uri: (0, uri_1.uri) `/tickets/${ticket}`,
14
+ }, opts);
15
+ }
16
+ async getTicketsMetrics(opts) {
17
+ return this.sendCommand({
18
+ method: 'get',
19
+ uri: (0, uri_1.uri) `/monitoring/ticket-metrics?${{ version: 2 }}`,
20
+ }, opts);
21
+ }
22
+ async getWaitingTicketsMetrics(opts) {
23
+ return this.sendCommand({
24
+ method: 'get',
25
+ uri: (0, uri_1.uri) `/monitoring/waiting-tickets?${{ version: 2 }}`,
26
+ }, {
27
+ collection: true,
28
+ ...opts,
29
+ });
30
+ }
31
+ async getTickets(filter, opts) {
32
+ let filterString = '';
33
+ return this.sendCommand({
34
+ method: 'get',
35
+ uri: (0, uri_1.uri) `/tickets?${{ $filter: filter }}`,
36
+ }, {
37
+ collection: true,
38
+ ...opts,
39
+ });
40
+ }
41
+ }
42
+ exports.DeskNamespace = DeskNamespace;
43
+ //# sourceMappingURL=desk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desk.js","sourceRoot":"","sources":["../../src/namespaces/desk.ts"],"names":[],"mappings":";;;AAEA,sCAAkC;AAClC,2CAAuD;AAEvD,MAAa,aAAc,SAAQ,qBAAS;IACxC,YAAY,MAAc;QACtB,KAAK,CAAC,MAAM,EAAE,4BAA4B,CAAC,CAAA;IAC/C,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAc,EAAE,IAAqB;QACxD,OAAO,IAAI,CAAC,WAAW,CACnB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,YAAY,MAAM,EAAE;SAC/B,EACD,IAAI,CACP,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,IAAqB;QAUhD,OAAO,IAAI,CAAC,WAAW,CACnB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,8BAA8B,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;SACzD,EACD,IAAI,CACP,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,wBAAwB,CAAC,IAAqB;QAQvD,OAAO,IAAI,CAAC,WAAW,CACnB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;SAC1D,EACD;YACI,UAAU,EAAE,IAAI;YAChB,GAAG,IAAI;SACV,CACJ,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,UAAU,CACnB,MAEC,EACD,IAAqB;QAErB,IAAI,YAAY,GAAG,EAAE,CAAA;QAErB,OAAO,IAAI,CAAC,WAAW,CACnB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;SAC5C,EACD;YACI,UAAU,EAAE,IAAI;YAChB,GAAG,IAAI;SACV,CACJ,CAAA;IACL,CAAC;CACJ;AAzED,sCAyEC"}
@@ -0,0 +1,6 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Namespace } from './namespace';
3
+ export declare class WhatsAppNamespace extends Namespace {
4
+ constructor(sender: Sender);
5
+ getMediaUploadUrl(): Promise<string>;
6
+ }
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsAppNamespace = void 0;
4
+ const uri_1 = require("../utils/uri");
5
+ const namespace_1 = require("./namespace");
6
+ class WhatsAppNamespace extends namespace_1.Namespace {
7
+ constructor(sender) {
8
+ super(sender, 'postmaster@media.msging.net');
9
+ }
10
+ async getMediaUploadUrl() {
11
+ return this.sendCommand({
12
+ method: 'get',
13
+ uri: (0, uri_1.uri) `/upload-media-uri`,
14
+ });
15
+ }
16
+ }
17
+ exports.WhatsAppNamespace = WhatsAppNamespace;
18
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/namespaces/media.ts"],"names":[],"mappings":";;;AACA,sCAAkC;AAClC,2CAAuC;AAEvC,MAAa,iBAAkB,SAAQ,qBAAS;IAC5C,YAAY,MAAc;QACtB,KAAK,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,iBAAiB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAC;YACpB,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,mBAAmB;SAC9B,CAAC,CAAA;IACN,CAAC;CACJ;AAXD,8CAWC"}
@@ -0,0 +1,21 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Command, CommandMethods, Identity } from '../types';
3
+ export type ConsumeOptions = {
4
+ ownerIdentity?: Identity;
5
+ take?: number;
6
+ skip?: number;
7
+ fetchall?: boolean;
8
+ };
9
+ export declare class Namespace {
10
+ private readonly sender;
11
+ private readonly owner;
12
+ constructor(sender: Sender, owner: Identity);
13
+ sendCommand<TMethod extends CommandMethods, TResponse extends TMethod extends 'get' ? unknown : void = void, TCollection = TResponse extends unknown[] ? true : false>(command: Omit<Command<TMethod>, 'uri' | 'id' | 'to'> & {
14
+ uri: {
15
+ path: string;
16
+ query?: URLSearchParams;
17
+ };
18
+ }, opts?: ConsumeOptions & {
19
+ collection?: TCollection extends true ? true : never;
20
+ }): Promise<TResponse>;
21
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Namespace = void 0;
4
+ const random_1 = require("../utils/random");
5
+ class Namespace {
6
+ constructor(sender, owner) {
7
+ this.sender = sender;
8
+ this.owner = owner;
9
+ }
10
+ async sendCommand(command, opts) {
11
+ let uri = command.uri.path;
12
+ let query = command.uri.query || new URLSearchParams();
13
+ const take = (opts === null || opts === void 0 ? void 0 : opts.take) || 100;
14
+ if (opts === null || opts === void 0 ? void 0 : opts.collection) {
15
+ query.set('$take', take.toString());
16
+ }
17
+ if (opts === null || opts === void 0 ? void 0 : opts.ownerIdentity) {
18
+ uri = `lime://${opts.ownerIdentity}/${uri}`;
19
+ }
20
+ if (uri.endsWith('?')) {
21
+ uri = uri.slice(0, -1);
22
+ }
23
+ if (query.size > 0) {
24
+ uri += '?' + query.toString();
25
+ }
26
+ const fetchItems = async (acc = [], skip = 0) => {
27
+ if (opts === null || opts === void 0 ? void 0 : opts.collection) {
28
+ query.set('$skip', skip.toString());
29
+ const commandToSend = {
30
+ id: (0, random_1.randomId)(),
31
+ to: this.owner,
32
+ ...command,
33
+ uri,
34
+ };
35
+ const response = (await this.sender.sendCommand(commandToSend));
36
+ acc = acc.concat(response.items);
37
+ if (!opts.fetchall || response.items.length < take) {
38
+ return acc;
39
+ }
40
+ else {
41
+ return fetchItems(acc, skip + take);
42
+ }
43
+ }
44
+ else {
45
+ const commandToSend = {
46
+ id: (0, random_1.randomId)(),
47
+ to: this.owner,
48
+ ...command,
49
+ uri,
50
+ };
51
+ const response = await this.sender.sendCommand(commandToSend);
52
+ return [response];
53
+ }
54
+ };
55
+ const items = await fetchItems([], (opts === null || opts === void 0 ? void 0 : opts.skip) || 0);
56
+ return (opts === null || opts === void 0 ? void 0 : opts.collection) ? items.flat() : items[0];
57
+ }
58
+ }
59
+ exports.Namespace = Namespace;
60
+ //# sourceMappingURL=namespace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../src/namespaces/namespace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Sender } from '../sender/sender';
2
+ import { Identity } from '../types';
3
+ import { ConsumeOptions, Namespace } from './namespace';
4
+ export declare class WhatsAppNamespace extends Namespace {
5
+ constructor(sender: Sender);
6
+ phoneToIdentity(phoneNumber: string): Promise<Identity>;
7
+ getMessageTemplates(opts?: ConsumeOptions): Promise<{
8
+ name: string;
9
+ }[]>;
10
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhatsAppNamespace = void 0;
4
+ const uri_1 = require("../utils/uri");
5
+ const namespace_1 = require("./namespace");
6
+ class WhatsAppNamespace extends namespace_1.Namespace {
7
+ constructor(sender) {
8
+ super(sender, 'postmaster@wa.gw.msging.net');
9
+ }
10
+ async phoneToIdentity(phoneNumber) {
11
+ const fixedPhoneNumber = phoneNumber[0] !== '+' ? `+${phoneNumber}` : phoneNumber;
12
+ try {
13
+ const result = await this.sendCommand({
14
+ method: 'get',
15
+ uri: (0, uri_1.uri) `/accounts/${fixedPhoneNumber}`,
16
+ }, {
17
+ ownerIdentity: 'wa.gw.msging.net',
18
+ });
19
+ return result.alternativeAccount;
20
+ }
21
+ catch (error) {
22
+ return `${phoneNumber}@wa.gw.msging.net`;
23
+ }
24
+ }
25
+ async getMessageTemplates(opts) {
26
+ return this.sendCommand({
27
+ method: 'get',
28
+ uri: (0, uri_1.uri) `/message-templates`,
29
+ }, {
30
+ collection: true,
31
+ ...opts,
32
+ });
33
+ }
34
+ }
35
+ exports.WhatsAppNamespace = WhatsAppNamespace;
36
+ //# sourceMappingURL=whatsapp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp.js","sourceRoot":"","sources":["../../src/namespaces/whatsapp.ts"],"names":[],"mappings":";;;AAEA,sCAAkC;AAClC,2CAAuD;AAEvD,MAAa,iBAAkB,SAAQ,qBAAS;IAC5C,YAAY,MAAc;QACtB,KAAK,CAAC,MAAM,EAAE,6BAA6B,CAAC,CAAA;IAChD,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,WAAmB;QAC5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAA;QAEjF,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAMjC;gBACI,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,IAAA,SAAG,EAAA,aAAa,gBAAgB,EAAE;aAC1C,EACD;gBACI,aAAa,EAAE,kBAA8B;aAChD,CACJ,CAAA;YAED,OAAO,MAAM,CAAC,kBAAkB,CAAA;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,GAAG,WAAW,mBAAmB,CAAA;QAC5C,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,IAAqB;QAKlD,OAAO,IAAI,CAAC,WAAW,CACnB;YACI,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,IAAA,SAAG,EAAA,oBAAoB;SAC/B,EACD;YACI,UAAU,EAAE,IAAI;YAChB,GAAG,IAAI;SACV,CACJ,CAAA;IACL,CAAC;CACJ;AA9CD,8CA8CC"}
@@ -0,0 +1,5 @@
1
+ export declare class BlipError extends Error {
2
+ readonly uri: string;
3
+ readonly code: number;
4
+ constructor(uri: string, code: number, description: string);
5
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BlipError = void 0;
4
+ class BlipError extends Error {
5
+ constructor(uri, code, description) {
6
+ super(`Blip command for ${uri} failed: ${description}`);
7
+ this.uri = uri;
8
+ this.code = code;
9
+ }
10
+ }
11
+ exports.BlipError = BlipError;
12
+ //# sourceMappingURL=bliperror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bliperror.js","sourceRoot":"","sources":["../../src/sender/bliperror.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAChC,YAA4B,GAAW,EAAkB,IAAY,EAAE,WAAmB;QACtF,KAAK,CAAC,oBAAoB,GAAG,YAAY,WAAW,EAAE,CAAC,CAAA;QAD/B,QAAG,GAAH,GAAG,CAAQ;QAAkB,SAAI,GAAJ,IAAI,CAAQ;IAErE,CAAC;CACJ;AAJD,8BAIC"}
@@ -0,0 +1,10 @@
1
+ import { CommandMethods, Command, Message, MessageTypes, Identity } from '../types';
2
+ import { Sender } from './sender';
3
+ export declare class HttpSender implements Sender {
4
+ private readonly token;
5
+ private readonly tenantId;
6
+ constructor(token: string, tenantId: string);
7
+ sendMessage<Type extends MessageTypes>(message: Message<Type>): Promise<void>;
8
+ sendCommand(command: Command<CommandMethods>): Promise<unknown>;
9
+ static login(botIdentityOrIdentifier: string | Identity, accessKey: string, tenantId: string): HttpSender;
10
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpSender = void 0;
4
+ const types_1 = require("../types");
5
+ const bliperror_1 = require("./bliperror");
6
+ class HttpSender {
7
+ constructor(token, tenantId) {
8
+ this.token = token;
9
+ this.tenantId = tenantId;
10
+ }
11
+ async sendMessage(message) {
12
+ const response = await fetch(`https://${this.tenantId}.http.msging.net/messages`, {
13
+ method: 'POST',
14
+ headers: {
15
+ 'Content-Type': 'application/json',
16
+ 'Authorization': `Key ${this.token}`,
17
+ },
18
+ body: JSON.stringify(message),
19
+ });
20
+ if (!response.ok) {
21
+ throw new Error('Failed to send message: ' + response.statusText);
22
+ }
23
+ }
24
+ async sendCommand(command) {
25
+ const response = await fetch(`https://${this.tenantId}.http.msging.net/commands`, {
26
+ method: 'POST',
27
+ headers: {
28
+ 'Content-Type': 'application/json',
29
+ 'Authorization': `Key ${this.token}`,
30
+ },
31
+ body: JSON.stringify(command),
32
+ });
33
+ if (!response.ok) {
34
+ throw new Error('Failed to send command: ' + response.statusText);
35
+ }
36
+ const result = await response.json();
37
+ if (result.status === 'failure') {
38
+ throw new bliperror_1.BlipError(command.uri, result.reason.code, result.reason.description);
39
+ }
40
+ else if (result.status === 'success') {
41
+ return result.resource;
42
+ }
43
+ else {
44
+ throw new Error('Unexpected response status: ' + result.status);
45
+ }
46
+ }
47
+ static login(botIdentityOrIdentifier, accessKey, tenantId) {
48
+ const botIdentity = types_1.Node.isValid(botIdentityOrIdentifier) ? botIdentityOrIdentifier : botIdentityOrIdentifier + '@msging.net';
49
+ const token = btoa(botIdentity + ':' + atob(accessKey));
50
+ return new HttpSender(token, tenantId);
51
+ }
52
+ }
53
+ exports.HttpSender = HttpSender;
54
+ //# sourceMappingURL=httpsender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpsender.js","sourceRoot":"","sources":["../../src/sender/httpsender.ts"],"names":[],"mappings":";;;AAAA,oCAA0G;AAC1G,2CAAuC;AAGvC,MAAa,UAAU;IACnB,YACqB,KAAa,EACb,QAAgB;QADhB,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAQ;IAClC,CAAC;IAEG,KAAK,CAAC,WAAW,CAA4B,OAAsB;QACtE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,IAAI,CAAC,QAAQ,2BAA2B,EAAE;YAC9E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;QACrE,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgC;QACrD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,IAAI,CAAC,QAAQ,2BAA2B,EAAE;YAC9E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,OAAO,IAAI,CAAC,KAAK,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;QACrE,CAAC;QAED,MAAM,MAAM,GAAoE,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QACrG,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,IAAI,qBAAS,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,QAAQ,CAAA;QAC1B,CAAC;aAAM,CAAC;YACJ,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QACnE,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,uBAA0C,EAAE,SAAiB,EAAE,QAAgB;QAC/F,MAAM,WAAW,GAAG,YAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,GAAG,aAAa,CAAA;QAC7H,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAA;QACvD,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;CACJ;AAlDD,gCAkDC"}
@@ -0,0 +1,5 @@
1
+ import { Command, CommandMethods, Message, MessageTypes } from '../types';
2
+ export interface Sender {
3
+ sendMessage<Type extends MessageTypes>(message: Message<Type>): Promise<void>;
4
+ sendCommand(command: Command<CommandMethods>): Promise<unknown>;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/sender/sender.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { UnknownMessageContent } from './message';
2
+ import { Identity } from './node';
3
+ export type Contact = {
4
+ identity: Identity;
5
+ name?: string;
6
+ group?: string;
7
+ city?: string;
8
+ email?: string;
9
+ phoneNumber?: string;
10
+ source: string;
11
+ taxDocument?: string;
12
+ extras?: Record<string, string | null>;
13
+ };
14
+ export type ThreadItem = ({
15
+ id: string;
16
+ direction: 'sent' | 'received';
17
+ date: string;
18
+ status: string;
19
+ metadata?: Record<string, string | null>;
20
+ } & UnknownMessageContent);
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/types/account.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ import { Envelope } from './envelope';
2
+ type ResourceCommand = {
3
+ type: string;
4
+ resource: unknown;
5
+ };
6
+ type NoResourceCommand = {};
7
+ interface CommandMethodsProperties {
8
+ ['get']: NoResourceCommand;
9
+ ['set']: ResourceCommand;
10
+ ['merge']: ResourceCommand;
11
+ ['delete']: NoResourceCommand | ResourceCommand;
12
+ }
13
+ export type CommandMethods = keyof CommandMethodsProperties;
14
+ export type Command<TMethod extends CommandMethods> = Envelope & {
15
+ uri: string;
16
+ method: TMethod;
17
+ } & CommandMethodsProperties[TMethod];
18
+ export type CommandResponse<TResponse, TMethod extends CommandMethods, TStatus extends 'success' | 'failure'> = Command<TMethod> & {
19
+ status: TStatus;
20
+ resource: TMethod extends 'get' ? (TStatus extends 'success' ? TResponse : never) : never;
21
+ reason: TStatus extends 'failure' ? {
22
+ code: number;
23
+ description: string;
24
+ } : never;
25
+ };
26
+ export {};
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/types/command.ts"],"names":[],"mappings":""}
@@ -0,0 +1,38 @@
1
+ export type TicketStatus = 'Waiting' | 'Open' | 'ClosedAttendant' | 'ClosedClient' | 'Transferred' | 'ClosedClientInactivity';
2
+ export type AttendanceHour = {
3
+ id: string;
4
+ title: string;
5
+ description: string;
6
+ isMain: boolean;
7
+ };
8
+ export declare enum DayOfWeek {
9
+ Sunday = "Sunday",
10
+ Monday = "Monday",
11
+ Tuesday = "Tuesday",
12
+ Wednesday = "Wednesday",
13
+ Thursday = "Thursday",
14
+ Friday = "Friday",
15
+ Saturday = "Saturday"
16
+ }
17
+ export type AttendanceHourScheduleItem = {
18
+ id: string;
19
+ startTime: string;
20
+ endTime: string;
21
+ dayOfWeek: DayOfWeek;
22
+ };
23
+ export type AttendanceHourOffItem = {
24
+ id: string;
25
+ reason: string;
26
+ startDate: string;
27
+ endDate: string;
28
+ };
29
+ export type Queue = {
30
+ id: string;
31
+ description: string;
32
+ };
33
+ export type DetailedAttendanceHour = {
34
+ attendanceHour: AttendanceHour;
35
+ attendanceHourScheduleItems: AttendanceHourScheduleItem[];
36
+ attendanceHourOffItems: AttendanceHourOffItem[];
37
+ queues: Queue[];
38
+ };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DayOfWeek = void 0;
4
+ var DayOfWeek;
5
+ (function (DayOfWeek) {
6
+ DayOfWeek["Sunday"] = "Sunday";
7
+ DayOfWeek["Monday"] = "Monday";
8
+ DayOfWeek["Tuesday"] = "Tuesday";
9
+ DayOfWeek["Wednesday"] = "Wednesday";
10
+ DayOfWeek["Thursday"] = "Thursday";
11
+ DayOfWeek["Friday"] = "Friday";
12
+ DayOfWeek["Saturday"] = "Saturday";
13
+ })(DayOfWeek || (exports.DayOfWeek = DayOfWeek = {}));
14
+ //# sourceMappingURL=desk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desk.js","sourceRoot":"","sources":["../../src/types/desk.ts"],"names":[],"mappings":";;;AAeA,IAAY,SAQX;AARD,WAAY,SAAS;IACjB,8BAAiB,CAAA;IACjB,8BAAiB,CAAA;IACjB,gCAAmB,CAAA;IACnB,oCAAuB,CAAA;IACvB,kCAAqB,CAAA;IACrB,8BAAiB,CAAA;IACjB,kCAAqB,CAAA;AACzB,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB"}
@@ -0,0 +1,8 @@
1
+ import { NodeLike } from './node';
2
+ export type Envelope = {
3
+ id: string;
4
+ from?: NodeLike;
5
+ to?: NodeLike;
6
+ metadata?: Record<string, string | null>;
7
+ pp?: NodeLike;
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/types/envelope.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ export * from './node';
2
+ export * from './envelope';
3
+ export * from './message';
4
+ export * from './command';
5
+ export * from './desk';
6
+ export * from './account';
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./node"), exports);
5
+ tslib_1.__exportStar(require("./envelope"), exports);
6
+ tslib_1.__exportStar(require("./message"), exports);
7
+ tslib_1.__exportStar(require("./command"), exports);
8
+ tslib_1.__exportStar(require("./desk"), exports);
9
+ tslib_1.__exportStar(require("./account"), exports);
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,iDAAsB;AACtB,qDAA0B;AAC1B,oDAAyB;AACzB,oDAAyB;AACzB,iDAAsB;AACtB,oDAAyB"}
@@ -0,0 +1,67 @@
1
+ import { Identity } from './node';
2
+ import { TicketStatus } from './desk';
3
+ import { Envelope } from './envelope';
4
+ export type PlainText = string;
5
+ export type Ticket<Type extends MessageTypes | undefined = undefined> = {
6
+ id: string;
7
+ sequentialId: string;
8
+ ownerIdentity: Identity;
9
+ customerIdentity: Identity;
10
+ customerDomain: string;
11
+ provider: string;
12
+ status: TicketStatus;
13
+ storageDate: string;
14
+ rating: number;
15
+ unreadMessages: number;
16
+ closed: boolean;
17
+ customerInput: Type extends MessageTypes ? Document<Type> : undefined;
18
+ };
19
+ export type Redirect<Type extends MessageTypes> = {
20
+ address: Identity;
21
+ context: Document<Type>;
22
+ };
23
+ export type MediaLink = {
24
+ title: string;
25
+ text: string;
26
+ type: string;
27
+ uri: string;
28
+ };
29
+ export type Reply<Type extends MessageTypes> = {
30
+ replied: Document<Type>;
31
+ };
32
+ export type Select = {
33
+ text: string;
34
+ options: {
35
+ text: string;
36
+ }[];
37
+ };
38
+ export type ChatState = {
39
+ state: string;
40
+ };
41
+ export interface MessageTypesContent {
42
+ ['text/plain']: PlainText;
43
+ ['application/vnd.iris.ticket+json']: Ticket<MessageTypes>;
44
+ ['application/vnd.lime.redirect+json']: Redirect<MessageTypes>;
45
+ ['application/vnd.lime.media-link+json']: MediaLink;
46
+ ['application/json']: Record<string, unknown>;
47
+ ['application/vnd.lime.reply+json']: Reply<MessageTypes>;
48
+ ['application/vnd.lime.select+json']: Select;
49
+ ['application/vnd.lime.chatstate+json']: ChatState;
50
+ }
51
+ export type MessageTypes = keyof MessageTypesContent;
52
+ export type Document<Type extends MessageTypes> = {
53
+ type: Type;
54
+ value: MessageTypesContent[Type];
55
+ };
56
+ export type MessageContent<Type extends MessageTypes> = {
57
+ type: Type;
58
+ content: MessageTypesContent[Type];
59
+ };
60
+ export type Message<Type extends MessageTypes> = Envelope & MessageContent<Type>;
61
+ export type UnknownDocument = Document<MessageTypes>;
62
+ export type UnknownMessage = Message<MessageTypes>;
63
+ export type UnknownMessageContent = MessageContent<MessageTypes>;
64
+ export type AnyDocument = Document<any>;
65
+ export declare const isMessageOfType: <Type extends keyof MessageTypesContent>(message: UnknownMessage, type: Type) => message is Message<Type>;
66
+ export declare const isDocumentOfType: <Type extends keyof MessageTypesContent>(document: UnknownDocument, type: Type) => document is Document<Type>;
67
+ export declare const messageToDocument: <Type extends keyof MessageTypesContent>(message: Pick<Message<Type>, 'type' | 'content'>) => Document<Type>;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.messageToDocument = exports.isDocumentOfType = exports.isMessageOfType = void 0;
4
+ const isMessageOfType = (message, type) => message.type === type;
5
+ exports.isMessageOfType = isMessageOfType;
6
+ const isDocumentOfType = (document, type) => document.type === type;
7
+ exports.isDocumentOfType = isDocumentOfType;
8
+ const messageToDocument = (message) => ({
9
+ type: message.type,
10
+ value: message.content,
11
+ });
12
+ exports.messageToDocument = messageToDocument;
13
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":";;;AA+EO,MAAM,eAAe,GAAG,CAC3B,OAAuB,EACvB,IAAU,EACc,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAA;AAHvC,QAAA,eAAe,mBAGwB;AAE7C,MAAM,gBAAgB,GAAG,CAC5B,QAAyB,EACzB,IAAU,EACgB,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAA;AAH1C,QAAA,gBAAgB,oBAG0B;AAEhD,MAAM,iBAAiB,GAAG,CAC7B,OAAgD,EAClC,EAAE,CAAC,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI;IAClB,KAAK,EAAE,OAAO,CAAC,OAAO;CACzB,CAAC,CAAA;AALW,QAAA,iBAAiB,qBAK5B"}
@@ -0,0 +1,12 @@
1
+ export type Identity = `${string}@${string}.${string}`;
2
+ export type NodeShape = Identity | `${Identity}/${string}`;
3
+ export type NodeLike = Node | NodeShape;
4
+ export declare class Node extends String {
5
+ readonly name: string;
6
+ readonly domain: string;
7
+ readonly instance: string | undefined;
8
+ constructor(name: string, domain: string, instance: string | undefined);
9
+ toIdentity(): `${string}@${string}.${string}`;
10
+ static isValid(node: string | null | undefined): node is NodeShape;
11
+ static from(node: NodeLike): Node;
12
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Node = void 0;
4
+ class Node extends String {
5
+ constructor(name, domain, instance) {
6
+ super(`${name}@${domain}/${instance}`);
7
+ this.name = name;
8
+ this.domain = domain;
9
+ this.instance = instance;
10
+ }
11
+ toIdentity() {
12
+ return `${this.name}@${this.domain}`;
13
+ }
14
+ static isValid(node) {
15
+ return node ? /^.+@.+\..+\/.+$/.test(node) : false;
16
+ }
17
+ static from(node) {
18
+ if (node instanceof Node) {
19
+ return node;
20
+ }
21
+ if (this.isValid(node)) {
22
+ const [name, otherPart] = node.split('@');
23
+ const [domain, instance] = otherPart.split('/');
24
+ return new Node(decodeURIComponent(name), domain, instance);
25
+ }
26
+ throw new Error(`Invalid node shape: ${node}`);
27
+ }
28
+ }
29
+ exports.Node = Node;
30
+ //# sourceMappingURL=node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/types/node.ts"],"names":[],"mappings":";;;AAIA,MAAa,IAAK,SAAQ,MAAM;IAC5B,YACoB,IAAY,EACZ,MAAc,EACd,QAA4B;QAE5C,KAAK,CAAC,GAAG,IAAI,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAA;QAJtB,SAAI,GAAJ,IAAI,CAAQ;QACZ,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAoB;IAGhD,CAAC;IAEM,UAAU;QACb,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAc,CAAA;IACpD,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,IAA+B;QACjD,OAAO,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACtD,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,IAAc;QAC7B,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACf,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACzC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC/C,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAA;IAClD,CAAC;CACJ;AA9BD,oBA8BC"}
@@ -0,0 +1 @@
1
+ export declare const randomId: () => string;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.randomId = void 0;
4
+ const randomId = () => {
5
+ return Math.random().toString(36).substring(2);
6
+ };
7
+ exports.randomId = randomId;
8
+ //# sourceMappingURL=random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.js","sourceRoot":"","sources":["../../src/utils/random.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,GAAG,EAAE;IACzB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC,CAAA;AAFY,QAAA,QAAQ,YAEpB"}
@@ -0,0 +1,4 @@
1
+ export declare const uri: (parts: TemplateStringsArray, ...vars: unknown[]) => {
2
+ path: string;
3
+ query?: URLSearchParams;
4
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.uri = void 0;
4
+ const uri = (parts, ...vars) => {
5
+ let uriString = parts.reduce((acc, part, i) => acc + (typeof vars[i - 1] === 'string' ? encodeURIComponent(vars[i - 1]) : '') + part);
6
+ const lastParam = vars[vars.length - 1];
7
+ if (lastParam && typeof lastParam === 'object') {
8
+ const query = lastParam;
9
+ const params = new URLSearchParams();
10
+ for (const key in query) {
11
+ if (query[key] !== undefined) {
12
+ params.append(key, query[key]);
13
+ }
14
+ }
15
+ return {
16
+ path: uriString,
17
+ query: params,
18
+ };
19
+ }
20
+ else {
21
+ return {
22
+ path: uriString,
23
+ query: undefined,
24
+ };
25
+ }
26
+ };
27
+ exports.uri = uri;
28
+ //# sourceMappingURL=uri.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uri.js","sourceRoot":"","sources":["../../src/utils/uri.ts"],"names":[],"mappings":";;;AAAO,MAAM,GAAG,GAAG,CACf,KAA2B,EAC3B,GAAG,IAAe,EAIpB,EAAE;IACA,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CACxB,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CACpH,CAAA;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACvC,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,SAAmC,CAAA;QACjD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAA;QAEpC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC;QACL,CAAC;QAED,OAAO;YACH,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,MAAM;SAChB,CAAA;IACL,CAAC;SAAM,CAAC;QACJ,OAAO;YACH,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;SACnB,CAAA;IACL,CAAC;AACL,CAAC,CAAA;AAhCY,QAAA,GAAG,OAgCf"}
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@whitewall/blip-sdk",
3
+ "version": "0.0.1",
4
+ "description": "Blip API wrapper",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "start": "tsc -d --watch",
9
+ "build": "tsc -d",
10
+ "lint": "prettier --write ."
11
+ },
12
+ "files": [
13
+ "dist/*"
14
+ ],
15
+ "devDependencies": {
16
+ "odata-query": "^7.0.6",
17
+ "prettier": "^3.2.5",
18
+ "tslib": "^2.6.2",
19
+ "typescript": "^5.4.5"
20
+ }
21
+ }