@whitewall/blip-sdk 0.0.153 → 0.0.155

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 (48) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/namespaces/account.js +1 -1
  4. package/dist/cjs/schemas/index.js +34 -0
  5. package/dist/cjs/schemas/index.js.map +1 -0
  6. package/dist/cjs/schemas/utils/validate.js +13 -0
  7. package/dist/cjs/schemas/utils/validate.js.map +1 -0
  8. package/dist/cjs/schemas/webhook.js +39 -0
  9. package/dist/cjs/schemas/webhook.js.map +1 -0
  10. package/dist/cjs/types/webhook.js +3 -0
  11. package/dist/cjs/types/webhook.js.map +1 -0
  12. package/dist/esm/index.js +1 -0
  13. package/dist/esm/index.js.map +1 -1
  14. package/dist/esm/namespaces/account.js +1 -1
  15. package/dist/esm/schemas/index.js +16 -0
  16. package/dist/esm/schemas/index.js.map +1 -0
  17. package/dist/esm/schemas/utils/validate.js +11 -0
  18. package/dist/esm/schemas/utils/validate.js.map +1 -0
  19. package/dist/esm/schemas/webhook.js +36 -0
  20. package/dist/esm/schemas/webhook.js.map +1 -0
  21. package/dist/esm/types/webhook.js +2 -0
  22. package/dist/esm/types/webhook.js.map +1 -0
  23. package/dist/types/index.d.ts +1 -0
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/schemas/index.d.ts +5 -0
  26. package/dist/types/schemas/index.d.ts.map +1 -0
  27. package/dist/types/schemas/utils/validate.d.ts +12 -0
  28. package/dist/types/schemas/utils/validate.d.ts.map +1 -0
  29. package/dist/types/schemas/webhook.d.ts +77 -0
  30. package/dist/types/schemas/webhook.d.ts.map +1 -0
  31. package/dist/types/types/account.d.ts +5 -1
  32. package/dist/types/types/account.d.ts.map +1 -1
  33. package/dist/types/types/commons.d.ts +3 -0
  34. package/dist/types/types/commons.d.ts.map +1 -1
  35. package/dist/types/types/message.d.ts +2 -2
  36. package/dist/types/types/message.d.ts.map +1 -1
  37. package/dist/types/types/webhook.d.ts +8 -0
  38. package/dist/types/types/webhook.d.ts.map +1 -0
  39. package/package.json +4 -1
  40. package/src/index.ts +1 -0
  41. package/src/namespaces/account.ts +1 -1
  42. package/src/schemas/index.ts +20 -0
  43. package/src/schemas/utils/validate.ts +21 -0
  44. package/src/schemas/webhook.ts +47 -0
  45. package/src/types/account.ts +5 -1
  46. package/src/types/commons.ts +1 -0
  47. package/src/types/message.ts +2 -2
  48. package/src/types/webhook.ts +8 -0
package/dist/cjs/index.js CHANGED
@@ -18,6 +18,7 @@ __exportStar(require("./client.js"), exports);
18
18
  __exportStar(require("./utils/uri.js"), exports);
19
19
  __exportStar(require("./utils/odata.js"), exports);
20
20
  __exportStar(require("./types/index.js"), exports);
21
+ __exportStar(require("./schemas/index.js"), exports);
21
22
  __exportStar(require("./sender/index.js"), exports);
22
23
  __exportStar(require("./namespaces/namespace.js"), exports);
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B;AAC9B,mDAAgC;AAChC,mDAAgC;AAChC,oDAAiC;AACjC,4DAAyC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA2B;AAC3B,iDAA8B;AAC9B,mDAAgC;AAChC,mDAAgC;AAChC,qDAAkC;AAClC,oDAAiC;AACjC,4DAAyC"}
@@ -303,7 +303,7 @@ class AccountNamespace extends namespace_ts_1.Namespace {
303
303
  resource: configuration,
304
304
  }, opts);
305
305
  }
306
- // THis doesn't ensure that the contact exists, it may have received a active message but never interacted
306
+ // This doesn't ensure that the contact exists, it may have received a active message but never interacted
307
307
  async getThreads(startDate, endDate, opts = {}) {
308
308
  const start = new Date(startDate);
309
309
  const end = new Date(endDate);
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.isWebhookType = void 0;
18
+ require("./utils/validate.js");
19
+ __exportStar(require("./webhook.js"), exports);
20
+ const webhook_ts_1 = require("./webhook.js");
21
+ const isWebhookType = (type, data) => {
22
+ switch (type) {
23
+ case 'contacts':
24
+ return !webhook_ts_1.eventSchema.safeParse(data).success && webhook_ts_1.contactSchema.safeParse(data).success;
25
+ case 'messages':
26
+ return webhook_ts_1.messageSchema.safeParse(data).success;
27
+ case 'events':
28
+ return webhook_ts_1.eventSchema.safeParse(data).success;
29
+ default:
30
+ return false;
31
+ }
32
+ };
33
+ exports.isWebhookType = isWebhookType;
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,+BAA4B;AAE5B,+CAA4B;AAI5B,6CAAwE;AAEjE,MAAM,aAAa,GAAG,CAA+B,IAAO,EAAE,IAAa,EAA2B,EAAE;IAC3G,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,UAAU;YACX,OAAO,CAAC,wBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,0BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QACxF,KAAK,UAAU;YACX,OAAO,0BAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QAChD,KAAK,QAAQ;YACT,OAAO,wBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QAC9C;YACI,OAAO,KAAK,CAAA;IACpB,CAAC;AACL,CAAC,CAAA;AAXY,QAAA,aAAa,iBAWzB"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const zod_1 = require("zod");
4
+ const index_ts_1 = require("../../types/index.js");
5
+ function identity() {
6
+ return this.refine((v) => index_ts_1.Node.isValid(v)).transform((v) => v);
7
+ }
8
+ function node() {
9
+ return this.refine((v) => index_ts_1.Node.isValid(v)).transform((v) => index_ts_1.Node.from(v));
10
+ }
11
+ zod_1.z.ZodString.prototype.identity = identity;
12
+ zod_1.z.ZodString.prototype.node = node;
13
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/schemas/utils/validate.ts"],"names":[],"mappings":";;AAAA,6BAAuB;AACvB,mDAA0E;AAE1E,SAAS,QAAQ;IACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAa,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,IAAI;IACT,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAI,CAAC,IAAI,CAAC,CAAc,CAAC,CAAC,CAAA;AAC1F,CAAC;AAED,OAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACzC,OAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blipWebhookSchema = exports.eventSchema = exports.messageSchema = exports.contactSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.contactSchema = zod_1.z.object({
6
+ identity: zod_1.z.string().identity(),
7
+ name: zod_1.z.string().optional(),
8
+ group: zod_1.z.string().optional(),
9
+ city: zod_1.z.string().optional(),
10
+ email: zod_1.z.string().optional(),
11
+ phoneNumber: zod_1.z.string().optional(),
12
+ source: zod_1.z.string().optional(),
13
+ taxDocument: zod_1.z.string().optional(),
14
+ extras: zod_1.z.record(zod_1.z.string(), zod_1.z.string().or(zod_1.z.null())).optional(),
15
+ });
16
+ exports.messageSchema = zod_1.z
17
+ .object({
18
+ id: zod_1.z.string().optional(),
19
+ type: zod_1.z.string(),
20
+ from: zod_1.z.string().identity(),
21
+ to: zod_1.z.string().identity(),
22
+ pp: zod_1.z.string().identity().optional(),
23
+ content: zod_1.z.unknown(),
24
+ metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.string().or(zod_1.z.null())).optional(),
25
+ })
26
+ .transform((message) => message);
27
+ exports.eventSchema = zod_1.z.object({
28
+ identity: zod_1.z.string().identity().optional(),
29
+ messageId: zod_1.z.string().optional(),
30
+ category: zod_1.z.string(),
31
+ action: zod_1.z.string(),
32
+ extras: zod_1.z.record(zod_1.z.string(), zod_1.z.string().or(zod_1.z.null())).optional(),
33
+ });
34
+ // TODO: add support for ticket once it's released
35
+ // https://help.blip.ai/hc/pt-br/articles/29187147295767-Formato-dos-envios-no-webhook
36
+ // The order is important here. We must try to parse more specific types first.
37
+ // e.g., if contact came before event, no event would be ever caught as such
38
+ exports.blipWebhookSchema = exports.eventSchema.or(exports.messageSchema).or(exports.contactSchema);
39
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/schemas/webhook.ts"],"names":[],"mappings":";;;AAAA,6BAAuB;AAGV,QAAA,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAA;AAEW,QAAA,aAAa,GAAG,OAAC;KACzB,MAAM,CAAC;IACJ,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,OAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,SAAS,CACN,CAAC,OAAO,EAAE,EAAE,CACR,OAGC,CACR,CAAA;AAEQ,QAAA,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAA;AAEF,kDAAkD;AAClD,sFAAsF;AAEtF,+EAA+E;AAC/E,4EAA4E;AAC/D,QAAA,iBAAiB,GAAG,mBAAW,CAAC,EAAE,CAAC,qBAAa,CAAC,CAAC,EAAE,CAAC,qBAAa,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":""}
package/dist/esm/index.js CHANGED
@@ -2,6 +2,7 @@ export * from "./client.js";
2
2
  export * from "./utils/uri.js";
3
3
  export * from "./utils/odata.js";
4
4
  export * from "./types/index.js";
5
+ export * from "./schemas/index.js";
5
6
  export * from "./sender/index.js";
6
7
  export * from "./namespaces/namespace.js";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA"}
@@ -300,7 +300,7 @@ export class AccountNamespace extends Namespace {
300
300
  resource: configuration,
301
301
  }, opts);
302
302
  }
303
- // THis doesn't ensure that the contact exists, it may have received a active message but never interacted
303
+ // This doesn't ensure that the contact exists, it may have received a active message but never interacted
304
304
  async getThreads(startDate, endDate, opts = {}) {
305
305
  const start = new Date(startDate);
306
306
  const end = new Date(endDate);
@@ -0,0 +1,16 @@
1
+ import "./utils/validate.js";
2
+ export * from "./webhook.js";
3
+ import { contactSchema, eventSchema, messageSchema } from "./webhook.js";
4
+ export const isWebhookType = (type, data) => {
5
+ switch (type) {
6
+ case 'contacts':
7
+ return !eventSchema.safeParse(data).success && contactSchema.safeParse(data).success;
8
+ case 'messages':
9
+ return messageSchema.safeParse(data).success;
10
+ case 'events':
11
+ return eventSchema.safeParse(data).success;
12
+ default:
13
+ return false;
14
+ }
15
+ };
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,cAAc,cAAc,CAAA;AAI5B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,CAA+B,IAAO,EAAE,IAAa,EAA2B,EAAE;IAC3G,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,UAAU;YACX,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QACxF,KAAK,UAAU;YACX,OAAO,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QAChD,KAAK,QAAQ;YACT,OAAO,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QAC9C;YACI,OAAO,KAAK,CAAA;IACpB,CAAC;AACL,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { z } from 'zod';
2
+ import { Node } from "../../types/index.js";
3
+ function identity() {
4
+ return this.refine((v) => Node.isValid(v)).transform((v) => v);
5
+ }
6
+ function node() {
7
+ return this.refine((v) => Node.isValid(v)).transform((v) => Node.from(v));
8
+ }
9
+ z.ZodString.prototype.identity = identity;
10
+ z.ZodString.prototype.node = node;
11
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/schemas/utils/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAiB,IAAI,EAAkB,MAAM,sBAAsB,CAAA;AAE1E,SAAS,QAAQ;IACb,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAa,CAAC,CAAA;AAC9E,CAAC;AAED,SAAS,IAAI;IACT,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAc,CAAC,CAAC,CAAA;AAC1F,CAAC;AAED,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AACzC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { z } from 'zod';
2
+ export const contactSchema = z.object({
3
+ identity: z.string().identity(),
4
+ name: z.string().optional(),
5
+ group: z.string().optional(),
6
+ city: z.string().optional(),
7
+ email: z.string().optional(),
8
+ phoneNumber: z.string().optional(),
9
+ source: z.string().optional(),
10
+ taxDocument: z.string().optional(),
11
+ extras: z.record(z.string(), z.string().or(z.null())).optional(),
12
+ });
13
+ export const messageSchema = z
14
+ .object({
15
+ id: z.string().optional(),
16
+ type: z.string(),
17
+ from: z.string().identity(),
18
+ to: z.string().identity(),
19
+ pp: z.string().identity().optional(),
20
+ content: z.unknown(),
21
+ metadata: z.record(z.string(), z.string().or(z.null())).optional(),
22
+ })
23
+ .transform((message) => message);
24
+ export const eventSchema = z.object({
25
+ identity: z.string().identity().optional(),
26
+ messageId: z.string().optional(),
27
+ category: z.string(),
28
+ action: z.string(),
29
+ extras: z.record(z.string(), z.string().or(z.null())).optional(),
30
+ });
31
+ // TODO: add support for ticket once it's released
32
+ // https://help.blip.ai/hc/pt-br/articles/29187147295767-Formato-dos-envios-no-webhook
33
+ // The order is important here. We must try to parse more specific types first.
34
+ // e.g., if contact came before event, no event would be ever caught as such
35
+ export const blipWebhookSchema = eventSchema.or(messageSchema).or(contactSchema);
36
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/schemas/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC;KACzB,MAAM,CAAC;IACJ,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACrE,CAAC;KACD,SAAS,CACN,CAAC,OAAO,EAAE,EAAE,CACR,OAGC,CACR,CAAA;AAEL,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnE,CAAC,CAAA;AAEF,kDAAkD;AAClD,sFAAsF;AAEtF,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":""}
@@ -2,6 +2,7 @@ export * from './client.ts';
2
2
  export * from './utils/uri.ts';
3
3
  export * from './utils/odata.ts';
4
4
  export * from './types/index.ts';
5
+ export * from './schemas/index.ts';
5
6
  export * from './sender/index.ts';
6
7
  export * from './namespaces/namespace.ts';
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,2BAA2B,CAAA"}
@@ -0,0 +1,5 @@
1
+ import './utils/validate.ts';
2
+ export * from './webhook.ts';
3
+ import type { WebhookTypes } from '../types/webhook.ts';
4
+ export declare const isWebhookType: <T extends keyof WebhookTypes>(type: T, data: unknown) => data is WebhookTypes[T];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAA;AAE5B,cAAc,cAAc,CAAA;AAE5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIvD,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,OAAO,KAAG,IAAI,IAAI,YAAY,CAAC,CAAC,CAW1G,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ import { Node } from '../../types/index.ts';
3
+ declare function identity<T extends z.ZodString>(this: T): z.ZodPipe<T, z.ZodTransform<`${string}@${string}.${string}`, z.core.output<T>>>;
4
+ declare function node<T extends z.ZodString>(this: T): z.ZodPipe<T, z.ZodTransform<Node, z.core.output<T>>>;
5
+ declare module 'zod' {
6
+ interface ZodString {
7
+ identity(): ReturnType<typeof identity<this>>;
8
+ node(): ReturnType<typeof node<this>>;
9
+ }
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/schemas/utils/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAiB,IAAI,EAAkB,MAAM,sBAAsB,CAAA;AAE1E,iBAAS,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,mFAE/C;AAED,iBAAS,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,wDAE3C;AAMD,OAAO,QAAQ,KAAK,CAAC;IACjB,UAAU,SAAS;QACf,QAAQ,IAAI,UAAU,CAAC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QAC7C,IAAI,IAAI,UAAU,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;KACxC;CACJ"}
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ import type { UnknownMessage } from '../types/index.ts';
3
+ export declare const contactSchema: z.ZodObject<{
4
+ identity: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
5
+ name: z.ZodOptional<z.ZodString>;
6
+ group: z.ZodOptional<z.ZodString>;
7
+ city: z.ZodOptional<z.ZodString>;
8
+ email: z.ZodOptional<z.ZodString>;
9
+ phoneNumber: z.ZodOptional<z.ZodString>;
10
+ source: z.ZodOptional<z.ZodString>;
11
+ taxDocument: z.ZodOptional<z.ZodString>;
12
+ extras: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
13
+ }, z.core.$strip>;
14
+ export declare const messageSchema: z.ZodPipe<z.ZodObject<{
15
+ id: z.ZodOptional<z.ZodString>;
16
+ type: z.ZodString;
17
+ from: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
18
+ to: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
19
+ pp: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>>;
20
+ content: z.ZodUnknown;
21
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
22
+ }, z.core.$strip>, z.ZodTransform<import("../types/envelope.ts").Envelope & import("../types/message.ts").MessageContent<keyof import("../types/message.ts").MessageTypesContent> & {
23
+ from: NonNullable<UnknownMessage["from"]>;
24
+ to: NonNullable<UnknownMessage["to"]>;
25
+ }, {
26
+ type: string;
27
+ from: `${string}@${string}.${string}`;
28
+ to: `${string}@${string}.${string}`;
29
+ content: unknown;
30
+ id?: string | undefined;
31
+ pp?: `${string}@${string}.${string}` | undefined;
32
+ metadata?: Record<string, string | null> | undefined;
33
+ }>>;
34
+ export declare const eventSchema: z.ZodObject<{
35
+ identity: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>>;
36
+ messageId: z.ZodOptional<z.ZodString>;
37
+ category: z.ZodString;
38
+ action: z.ZodString;
39
+ extras: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
40
+ }, z.core.$strip>;
41
+ export declare const blipWebhookSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
42
+ identity: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>>;
43
+ messageId: z.ZodOptional<z.ZodString>;
44
+ category: z.ZodString;
45
+ action: z.ZodString;
46
+ extras: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
47
+ }, z.core.$strip>, z.ZodPipe<z.ZodObject<{
48
+ id: z.ZodOptional<z.ZodString>;
49
+ type: z.ZodString;
50
+ from: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
51
+ to: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
52
+ pp: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>>;
53
+ content: z.ZodUnknown;
54
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
55
+ }, z.core.$strip>, z.ZodTransform<import("../types/envelope.ts").Envelope & import("../types/message.ts").MessageContent<keyof import("../types/message.ts").MessageTypesContent> & {
56
+ from: NonNullable<UnknownMessage["from"]>;
57
+ to: NonNullable<UnknownMessage["to"]>;
58
+ }, {
59
+ type: string;
60
+ from: `${string}@${string}.${string}`;
61
+ to: `${string}@${string}.${string}`;
62
+ content: unknown;
63
+ id?: string | undefined;
64
+ pp?: `${string}@${string}.${string}` | undefined;
65
+ metadata?: Record<string, string | null> | undefined;
66
+ }>>]>, z.ZodObject<{
67
+ identity: z.ZodPipe<z.ZodString, z.ZodTransform<`${string}@${string}.${string}`, string>>;
68
+ name: z.ZodOptional<z.ZodString>;
69
+ group: z.ZodOptional<z.ZodString>;
70
+ city: z.ZodOptional<z.ZodString>;
71
+ email: z.ZodOptional<z.ZodString>;
72
+ phoneNumber: z.ZodOptional<z.ZodString>;
73
+ source: z.ZodOptional<z.ZodString>;
74
+ taxDocument: z.ZodOptional<z.ZodString>;
75
+ extras: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNull]>>>;
76
+ }, z.core.$strip>]>;
77
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/schemas/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,eAAO,MAAM,aAAa;;;;;;;;;;iBAUxB,CAAA;AAEF,eAAO,MAAM,aAAa;;;;;;;;;UAaJ,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;;;;;;;;GAEhD,CAAA;AAEL,eAAO,MAAM,WAAW;;;;;;iBAMtB,CAAA;AAOF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;UAlBR,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACrC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;;;;;;;;;;;;;;;;;;mBAiB2B,CAAA"}
@@ -19,7 +19,11 @@ export type Presence = {
19
19
  echo?: boolean;
20
20
  /** The priority of the presence, higher means more priority */
21
21
  priority?: number;
22
- /** Present instances for a identity */
22
+ /**
23
+ * Present instances for a identity
24
+ * Instances starting with a ! indicate that it can be overriden, so when a new connection is made for the same instance, the previous session will be closed.
25
+ * Instances starting with a # indicate that it cannot be overriden, so when a new connection is made for the same instance, it will fail.
26
+ */
23
27
  instances: Array<string>;
24
28
  };
25
29
  export type Account = {
@@ -1 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  export type Json = string | number | boolean | null | Array<Json> | {
2
2
  [key: string]: Json;
3
3
  };
4
+ export type JsonObject = {
5
+ [key: string]: Json;
6
+ };
4
7
  export type MaybePromise<T> = T | Promise<T>;
5
8
  //# sourceMappingURL=commons.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../../../src/types/commons.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"commons.d.ts","sourceRoot":"","sources":["../../../src/types/commons.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAC3F,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAChD,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import type { Json } from './commons.ts';
1
+ import type { JsonObject } from './commons.ts';
2
2
  import type { TicketStatus } from './desk.ts';
3
3
  import type { Envelope } from './envelope.ts';
4
4
  import type { Identity } from './node.ts';
@@ -60,7 +60,7 @@ export interface MessageTypesContent {
60
60
  'application/vnd.iris.ticket+json': Ticket<MessageTypes>;
61
61
  'application/vnd.lime.redirect+json': Redirect<MessageTypes>;
62
62
  'application/vnd.lime.media-link+json': MediaLink;
63
- 'application/json': Json;
63
+ 'application/json': JsonObject;
64
64
  'application/vnd.lime.reply+json': Reply<MessageTypes>;
65
65
  'application/vnd.lime.select+json': Select;
66
66
  'application/vnd.lime.chatstate+json': ChatState;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B,MAAM,MAAM,MAAM,CAAC,IAAI,SAAS,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI;IACpE,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,QAAQ,CAAA;IACvB,gBAAgB,EAAE,QAAQ,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,wBAAwB,CAAC,EAAE,MAAM,CAAA;IACjC,aAAa,CAAC,EAAE,QAAQ,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,IAAI,SAAS,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAA;IACrE,MAAM,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,IAAI,SAAS,YAAY,IAAI;IAC9C,OAAO,EAAE,QAAQ,CAAA;IACjB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IAEpB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,KAAK,CAAC,IAAI,SAAS,YAAY,IAAI;IAC3C,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,WAAW,GAAG,YAAY,CAAA;IAClC,OAAO,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAA;KACf,CAAC,CAAA;CACL,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;CAClE,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,UAAU,CAAA;IACtD,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,WAAW,mBAAmB;IAChC,YAAY,EAAE,SAAS,CAAA;IACvB,kCAAkC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IACxD,oCAAoC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC5D,sCAAsC,EAAE,SAAS,CAAA;IACjD,kBAAkB,EAAE,IAAI,CAAA;IACxB,iCAAiC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;IACtD,kCAAkC,EAAE,MAAM,CAAA;IAC1C,qCAAqC,EAAE,SAAS,CAAA;IAChD,oCAAoC,EAAE,OAAO,CAAA;CAChD;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAA;AAEpD,MAAM,MAAM,QAAQ,CAAC,IAAI,SAAS,YAAY,IAAI;IAC9C,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,IAAI,SAAS,YAAY,IAAI;IACpD,IAAI,EAAE,IAAI,CAAA;IACV,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,IAAI,SAAS,YAAY,IAAI,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;AAEhF,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAA;AACpD,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;AAClD,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,YAAY,CAAC,CAAA;AAEhE,eAAO,MAAM,SAAS,GAAI,UAAU,QAAQ,KAAG,QAAQ,IAAI,cACyB,CAAA;AAEpF,eAAO,MAAM,eAAe,GAAI,IAAI,SAAS,YAAY,EACrD,SAAS,cAAc,EACvB,MAAM,IAAI,KACX,OAAO,IAAI,OAAO,CAAC,IAAI,CAA0B,CAAA;AAEpD,eAAO,MAAM,gBAAgB,GAAI,IAAI,SAAS,YAAY,EACtD,UAAU,eAAe,EACzB,MAAM,IAAI,KACX,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAA2B,CAAA;AAEvD,eAAO,MAAM,iBAAiB,GAAI,IAAI,SAAS,YAAY,EACvD,SAAS,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,KACjD,QAAQ,CAAC,IAAI,CAGd,CAAA"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { z } from 'zod';
2
+ import type { contactSchema, eventSchema, messageSchema } from '../schemas/index.ts';
3
+ export type WebhookTypes = {
4
+ contacts: z.TypeOf<typeof contactSchema>;
5
+ messages: z.TypeOf<typeof messageSchema>;
6
+ events: z.TypeOf<typeof eventSchema>;
7
+ };
8
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEpF,MAAM,MAAM,YAAY,GAAG;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAA;IACxC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,aAAa,CAAC,CAAA;IACxC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,WAAW,CAAC,CAAA;CACvC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitewall/blip-sdk",
3
- "version": "0.0.153",
3
+ "version": "0.0.155",
4
4
  "description": "Blip API wrapper",
5
5
  "exports": {
6
6
  "types": "./dist/types/index.d.ts",
@@ -23,5 +23,8 @@
23
23
  "@types/node": "22.14.1",
24
24
  "concurrently": "9.2.0",
25
25
  "typescript": "5.8.3"
26
+ },
27
+ "dependencies": {
28
+ "zod": "4.0.15"
26
29
  }
27
30
  }
package/src/index.ts CHANGED
@@ -2,5 +2,6 @@ export * from './client.ts'
2
2
  export * from './utils/uri.ts'
3
3
  export * from './utils/odata.ts'
4
4
  export * from './types/index.ts'
5
+ export * from './schemas/index.ts'
5
6
  export * from './sender/index.ts'
6
7
  export * from './namespaces/namespace.ts'
@@ -458,7 +458,7 @@ export class AccountNamespace extends Namespace {
458
458
  )
459
459
  }
460
460
 
461
- // THis doesn't ensure that the contact exists, it may have received a active message but never interacted
461
+ // This doesn't ensure that the contact exists, it may have received a active message but never interacted
462
462
  public async getThreads(startDate: Date | string, endDate: Date | string, opts: Omit<ConsumeOptions, 'skip'> = {}) {
463
463
  const start = new Date(startDate)
464
464
  const end = new Date(endDate)
@@ -0,0 +1,20 @@
1
+ import './utils/validate.ts'
2
+
3
+ export * from './webhook.ts'
4
+
5
+ import type { WebhookTypes } from '../types/webhook.ts'
6
+
7
+ import { contactSchema, eventSchema, messageSchema } from './webhook.ts'
8
+
9
+ export const isWebhookType = <T extends keyof WebhookTypes>(type: T, data: unknown): data is WebhookTypes[T] => {
10
+ switch (type) {
11
+ case 'contacts':
12
+ return !eventSchema.safeParse(data).success && contactSchema.safeParse(data).success
13
+ case 'messages':
14
+ return messageSchema.safeParse(data).success
15
+ case 'events':
16
+ return eventSchema.safeParse(data).success
17
+ default:
18
+ return false
19
+ }
20
+ }
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod'
2
+ import { type Identity, Node, type NodeShape } from '../../types/index.ts'
3
+
4
+ function identity<T extends z.ZodString>(this: T) {
5
+ return this.refine((v) => Node.isValid(v)).transform((v) => v as Identity)
6
+ }
7
+
8
+ function node<T extends z.ZodString>(this: T) {
9
+ return this.refine((v) => Node.isValid(v)).transform((v) => Node.from(v as NodeShape))
10
+ }
11
+
12
+ z.ZodString.prototype.identity = identity
13
+ z.ZodString.prototype.node = node
14
+
15
+ // From https://github.com/colinhacks/zod/discussions/4445#discussioncomment-13236525
16
+ declare module 'zod' {
17
+ interface ZodString {
18
+ identity(): ReturnType<typeof identity<this>>
19
+ node(): ReturnType<typeof node<this>>
20
+ }
21
+ }
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod'
2
+ import type { UnknownMessage } from '../types/index.ts'
3
+
4
+ export const contactSchema = z.object({
5
+ identity: z.string().identity(),
6
+ name: z.string().optional(),
7
+ group: z.string().optional(),
8
+ city: z.string().optional(),
9
+ email: z.string().optional(),
10
+ phoneNumber: z.string().optional(),
11
+ source: z.string().optional(),
12
+ taxDocument: z.string().optional(),
13
+ extras: z.record(z.string(), z.string().or(z.null())).optional(),
14
+ })
15
+
16
+ export const messageSchema = z
17
+ .object({
18
+ id: z.string().optional(),
19
+ type: z.string(),
20
+ from: z.string().identity(),
21
+ to: z.string().identity(),
22
+ pp: z.string().identity().optional(),
23
+ content: z.unknown(),
24
+ metadata: z.record(z.string(), z.string().or(z.null())).optional(),
25
+ })
26
+ .transform(
27
+ (message) =>
28
+ message as UnknownMessage & {
29
+ from: NonNullable<UnknownMessage['from']>
30
+ to: NonNullable<UnknownMessage['to']>
31
+ },
32
+ )
33
+
34
+ export const eventSchema = z.object({
35
+ identity: z.string().identity().optional(),
36
+ messageId: z.string().optional(),
37
+ category: z.string(),
38
+ action: z.string(),
39
+ extras: z.record(z.string(), z.string().or(z.null())).optional(),
40
+ })
41
+
42
+ // TODO: add support for ticket once it's released
43
+ // https://help.blip.ai/hc/pt-br/articles/29187147295767-Formato-dos-envios-no-webhook
44
+
45
+ // The order is important here. We must try to parse more specific types first.
46
+ // e.g., if contact came before event, no event would be ever caught as such
47
+ export const blipWebhookSchema = eventSchema.or(messageSchema).or(contactSchema)
@@ -21,7 +21,11 @@ export type Presence = {
21
21
  echo?: boolean
22
22
  /** The priority of the presence, higher means more priority */
23
23
  priority?: number
24
- /** Present instances for a identity */
24
+ /**
25
+ * Present instances for a identity
26
+ * Instances starting with a ! indicate that it can be overriden, so when a new connection is made for the same instance, the previous session will be closed.
27
+ * Instances starting with a # indicate that it cannot be overriden, so when a new connection is made for the same instance, it will fail.
28
+ */
25
29
  instances: Array<string>
26
30
  }
27
31
 
@@ -1,2 +1,3 @@
1
1
  export type Json = string | number | boolean | null | Array<Json> | { [key: string]: Json }
2
+ export type JsonObject = { [key: string]: Json }
2
3
  export type MaybePromise<T> = T | Promise<T>
@@ -1,4 +1,4 @@
1
- import type { Json } from './commons.ts'
1
+ import type { JsonObject } from './commons.ts'
2
2
  import type { TicketStatus } from './desk.ts'
3
3
  import type { Envelope } from './envelope.ts'
4
4
  import type { Identity } from './node.ts'
@@ -70,7 +70,7 @@ export interface MessageTypesContent {
70
70
  'application/vnd.iris.ticket+json': Ticket<MessageTypes>
71
71
  'application/vnd.lime.redirect+json': Redirect<MessageTypes>
72
72
  'application/vnd.lime.media-link+json': MediaLink
73
- 'application/json': Json
73
+ 'application/json': JsonObject
74
74
  'application/vnd.lime.reply+json': Reply<MessageTypes>
75
75
  'application/vnd.lime.select+json': Select
76
76
  'application/vnd.lime.chatstate+json': ChatState
@@ -0,0 +1,8 @@
1
+ import type { z } from 'zod'
2
+ import type { contactSchema, eventSchema, messageSchema } from '../schemas/index.ts'
3
+
4
+ export type WebhookTypes = {
5
+ contacts: z.TypeOf<typeof contactSchema>
6
+ messages: z.TypeOf<typeof messageSchema>
7
+ events: z.TypeOf<typeof eventSchema>
8
+ }