@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.
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/namespaces/account.js +1 -1
- package/dist/cjs/schemas/index.js +34 -0
- package/dist/cjs/schemas/index.js.map +1 -0
- package/dist/cjs/schemas/utils/validate.js +13 -0
- package/dist/cjs/schemas/utils/validate.js.map +1 -0
- package/dist/cjs/schemas/webhook.js +39 -0
- package/dist/cjs/schemas/webhook.js.map +1 -0
- package/dist/cjs/types/webhook.js +3 -0
- package/dist/cjs/types/webhook.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/namespaces/account.js +1 -1
- package/dist/esm/schemas/index.js +16 -0
- package/dist/esm/schemas/index.js.map +1 -0
- package/dist/esm/schemas/utils/validate.js +11 -0
- package/dist/esm/schemas/utils/validate.js.map +1 -0
- package/dist/esm/schemas/webhook.js +36 -0
- package/dist/esm/schemas/webhook.js.map +1 -0
- package/dist/esm/types/webhook.js +2 -0
- package/dist/esm/types/webhook.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/schemas/index.d.ts +5 -0
- package/dist/types/schemas/index.d.ts.map +1 -0
- package/dist/types/schemas/utils/validate.d.ts +12 -0
- package/dist/types/schemas/utils/validate.d.ts.map +1 -0
- package/dist/types/schemas/webhook.d.ts +77 -0
- package/dist/types/schemas/webhook.d.ts.map +1 -0
- package/dist/types/types/account.d.ts +5 -1
- package/dist/types/types/account.d.ts.map +1 -1
- package/dist/types/types/commons.d.ts +3 -0
- package/dist/types/types/commons.d.ts.map +1 -1
- package/dist/types/types/message.d.ts +2 -2
- package/dist/types/types/message.d.ts.map +1 -1
- package/dist/types/types/webhook.d.ts +8 -0
- package/dist/types/types/webhook.d.ts.map +1 -0
- package/package.json +4 -1
- package/src/index.ts +1 -0
- package/src/namespaces/account.ts +1 -1
- package/src/schemas/index.ts +20 -0
- package/src/schemas/utils/validate.ts +21 -0
- package/src/schemas/webhook.ts +47 -0
- package/src/types/account.ts +5 -1
- package/src/types/commons.ts +1 -0
- package/src/types/message.ts +2 -2
- 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
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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
|
-
//
|
|
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 @@
|
|
|
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
|
package/dist/esm/index.js.map
CHANGED
|
@@ -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
|
-
//
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../src/types/webhook.ts"],"names":[],"mappings":""}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGzC,MAAM,MAAM,QAAQ,GAAG;IACnB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAA;IACnE;;;;;OAKG;IACH,WAAW,EAAE,UAAU,GAAG,UAAU,CAAA;IACpC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,sLAAsL;IACtL,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/types/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGzC,MAAM,MAAM,QAAQ,GAAG;IACnB,MAAM,EAAE,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAA;IACnE;;;;;OAKG;IACH,WAAW,EAAE,UAAU,GAAG,UAAU,CAAA;IACpC,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAA;IAChB,sLAAsL;IACtL,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,QAAQ,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,YAAY,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE7C,MAAM,MAAM,MAAM,GAAG;IACjB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,GAAG,UAAU,CAAA;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAA;QACZ,WAAW,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CAC3C,GAAG,qBAAqB,CAAA;AAEzB,MAAM,MAAM,OAAO,GAAG;IAClB,EAAE,EAAE,QAAQ,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,QAAQ,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,QAAQ,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,MAAM,CAAA;IACpB,GAAG,EAAE,MAAM,CAAA;CACd,CAAA"}
|
|
@@ -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 {
|
|
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':
|
|
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,
|
|
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.
|
|
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
|
@@ -458,7 +458,7 @@ export class AccountNamespace extends Namespace {
|
|
|
458
458
|
)
|
|
459
459
|
}
|
|
460
460
|
|
|
461
|
-
//
|
|
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)
|
package/src/types/account.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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
|
|
package/src/types/commons.ts
CHANGED
package/src/types/message.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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':
|
|
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
|
+
}
|