@whitewall/blip-sdk 0.0.154 → 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/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/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":"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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
|
|
|
@@ -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
|
+
}
|