karboai 1.3.0 → 1.4.0

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.
@@ -3,4 +3,8 @@ import { ErrorData } from './schemas/error';
3
3
  export declare const KARBO_API = "https://api.karboai.com";
4
4
  export declare const BASIC_HEADERS: UndiciHeaders;
5
5
  export declare const ERRORS: Record<number, ErrorData>;
6
+ export declare const SOCKET_TOPICS: {
7
+ 0: string;
8
+ 1: string;
9
+ };
6
10
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,SAAS,4BAA4B,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,aAE3B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAyB5C,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,eAAO,MAAM,SAAS,4BAA4B,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,aAE3B,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAyB5C,CAAC;AAEF,eAAO,MAAM,aAAa;;;CAIzB,CAAC"}
package/dist/constants.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ERRORS = exports.BASIC_HEADERS = exports.KARBO_API = void 0;
3
+ exports.SOCKET_TOPICS = exports.ERRORS = exports.BASIC_HEADERS = exports.KARBO_API = void 0;
4
4
  exports.KARBO_API = 'https://api.karboai.com';
5
5
  exports.BASIC_HEADERS = {
6
6
  'Content-Type': 'application/json',
@@ -31,3 +31,8 @@ exports.ERRORS = {
31
31
  message: 'Rate limit exceeded',
32
32
  },
33
33
  };
34
+ exports.SOCKET_TOPICS = {
35
+ // TODO: add more topics
36
+ 0: 'message',
37
+ 1: 'join',
38
+ };
@@ -34,7 +34,7 @@ class HttpToolKit {
34
34
  };
35
35
  post = async (config) => {
36
36
  const response = await (0, undici_1.fetch)(`${constants_1.KARBO_API}${config.path}`, {
37
- method: 'GET',
37
+ method: 'POST',
38
38
  body: config.body,
39
39
  headers: this.headers,
40
40
  });
@@ -0,0 +1,13 @@
1
+ import { ConnectCallback } from '../../schemas/sockets';
2
+ import { Router } from './router';
3
+ import { KarboAI } from '../karboai';
4
+ export declare class Dispatcher {
5
+ private karbo;
6
+ private socket?;
7
+ private listeners;
8
+ constructor(karbo: KarboAI);
9
+ private processListeners;
10
+ bind: (...routers: Router[]) => void;
11
+ attach: (token: string, callback: ConnectCallback) => void;
12
+ }
13
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/hub/dispatcher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAyB,MAAM,uBAAuB,CAAC;AAG/E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;IAExB,OAAO,CAAC,SAAS,CAGb;gBAEQ,KAAK,EAAE,OAAO;IAI1B,OAAO,CAAC,gBAAgB,CAsBtB;IAEK,IAAI,GAAI,GAAG,SAAS,MAAM,EAAE,KAAG,IAAI,CAWxC;IAEK,MAAM,GAAI,OAAO,MAAM,EAAE,UAAU,eAAe,KAAG,IAAI,CAa9D;CACH"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Dispatcher = void 0;
4
+ const socket_io_client_1 = require("socket.io-client");
5
+ const constants_1 = require("../../constants");
6
+ const message_1 = require("../../schemas/karboai/message");
7
+ const logger_1 = require("../../utils/logger");
8
+ class Dispatcher {
9
+ karbo;
10
+ socket;
11
+ listeners = new Map();
12
+ constructor(karbo) {
13
+ this.karbo = karbo;
14
+ }
15
+ processListeners = () => {
16
+ this.socket?.on('new_message', (data) => {
17
+ const message = message_1.MessageSchema.parse(data);
18
+ if (message.author.userId == this.karbo.id)
19
+ return;
20
+ const event = constants_1.SOCKET_TOPICS[message.type];
21
+ this.listeners.get(event)?.forEach(async (listener) => {
22
+ for (const middleware of listener.middlewares) {
23
+ if (!(await middleware({ karbo: this.karbo, message })))
24
+ return;
25
+ }
26
+ logger_1.LOGGER.info({
27
+ event,
28
+ content: message.content,
29
+ chatId: message.chatId,
30
+ userId: message.author.userId,
31
+ });
32
+ listener.callback({ karbo: this.karbo, message });
33
+ });
34
+ });
35
+ };
36
+ bind = (...routers) => {
37
+ for (const router of routers) {
38
+ for (const [event, listeners] of router.listeners) {
39
+ if (!this.listeners.has(event))
40
+ this.listeners.set(event, new Set());
41
+ for (const listener of listeners) {
42
+ this.listeners.get(event).add(listener);
43
+ }
44
+ }
45
+ logger_1.LOGGER.info(`Bound router: ${router.name}`);
46
+ }
47
+ };
48
+ attach = (token, callback) => {
49
+ this.socket = (0, socket_io_client_1.io)(constants_1.KARBO_API, {
50
+ path: '/bot/ws',
51
+ transports: ['websocket'],
52
+ auth: { bot_token: token },
53
+ });
54
+ this.socket.on('connect', async () => {
55
+ logger_1.LOGGER.info('Connected to KarboAI socket');
56
+ await callback();
57
+ this.processListeners();
58
+ });
59
+ };
60
+ }
61
+ exports.Dispatcher = Dispatcher;
@@ -0,0 +1,13 @@
1
+ import { Listener, SocketCallback, SocketEvent, SocketMiddleware } from '../../schemas/sockets';
2
+ export declare class Router {
3
+ private _name;
4
+ private _listeners;
5
+ private middlewares;
6
+ constructor(name?: string);
7
+ get listeners(): Map<string, Set<Listener>>;
8
+ get name(): string;
9
+ pre: (middleware: SocketMiddleware) => number;
10
+ on: (event: SocketEvent, callback: SocketCallback) => void;
11
+ command: (startsWith: string, callback: SocketCallback) => Promise<void>;
12
+ }
13
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/core/hub/router.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,QAAQ,EACR,cAAc,EACd,WAAW,EACX,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAU/B,qBAAa,MAAM;IACjB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAGd;IACJ,OAAO,CAAC,WAAW,CAA0B;gBAEjC,IAAI,GAAE,MAA6B;IAI/C,IAAI,SAAS,+BAEZ;IAED,IAAI,IAAI,WAEP;IAEM,GAAG,GAAI,YAAY,gBAAgB,YACN;IAE7B,EAAE,GAAI,OAAO,WAAW,EAAE,UAAU,cAAc,KAAG,IAAI,CAM9D;IAEK,OAAO,GACZ,YAAY,MAAM,EAClB,UAAU,cAAc,KACvB,OAAO,CAAC,IAAI,CAAC,CAQd;CACH"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Router = void 0;
4
+ const utils_1 = require("../../utils/utils");
5
+ const commandMiddleware = (content) => async (context) => {
6
+ if (!context.message.content.startsWith(content))
7
+ return false;
8
+ return true;
9
+ };
10
+ class Router {
11
+ _name;
12
+ _listeners = new Map();
13
+ middlewares = [];
14
+ constructor(name = (0, utils_1.generateRouterName)()) {
15
+ this._name = name;
16
+ }
17
+ get listeners() {
18
+ return this._listeners;
19
+ }
20
+ get name() {
21
+ return this._name;
22
+ }
23
+ pre = (middleware) => this.middlewares.push(middleware);
24
+ on = (event, callback) => {
25
+ if (!this._listeners.has(event))
26
+ this._listeners.set(event, new Set());
27
+ this._listeners
28
+ .get(event)
29
+ .add({ middlewares: this.middlewares, callback });
30
+ };
31
+ command = async (startsWith, callback) => {
32
+ if (!this._listeners.has('message'))
33
+ this._listeners.set('message', new Set());
34
+ this._listeners.get('message').add({
35
+ middlewares: [commandMiddleware(startsWith), ...this.middlewares],
36
+ callback,
37
+ });
38
+ };
39
+ }
40
+ exports.Router = Router;
@@ -2,10 +2,14 @@ import { KarboConfig } from '../schemas/configs';
2
2
  import { MembersResponse, MeResponse } from '../schemas/responses';
3
3
  import { Message } from '../schemas/karboai/message';
4
4
  import { User } from '../schemas/karboai/users';
5
+ import { ConnectCallback } from '../schemas/sockets';
6
+ import { Router } from './hub/router';
5
7
  export declare class KarboAI {
6
8
  private readonly config;
7
9
  private readonly httptoolkit;
10
+ private readonly dispatcher;
8
11
  constructor(config: KarboConfig);
12
+ get id(): string;
9
13
  private sendMessage;
10
14
  me: () => Promise<MeResponse>;
11
15
  text: (chatId: string, content: string, replyMessageId?: string) => Promise<{
@@ -22,5 +26,7 @@ export declare class KarboAI {
22
26
  user: (userId: string) => Promise<User>;
23
27
  leave: (chatId: string) => Promise<boolean>;
24
28
  kick: (chatId: string, userId: string) => Promise<boolean>;
29
+ attach: (callback?: ConnectCallback) => void;
30
+ bind: (...routers: Router[]) => void;
25
31
  }
26
32
  //# sourceMappingURL=karboai.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"karboai.d.ts","sourceRoot":"","sources":["../../src/core/karboai.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,eAAe,EAEf,UAAU,EAQX,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,IAAI,EAAc,MAAM,0BAA0B,CAAC;AAE5D,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;gBAE9B,MAAM,EAAE,WAAW;IAO/B,OAAO,CAAC,WAAW,CAcd;IAEE,EAAE,QAAa,OAAO,CAAC,UAAU,CAAC,CAIpC;IAEE,IAAI,GACT,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM;;;OAMpB;IAEE,KAAK,GACV,QAAQ,MAAM,EACd,QAAQ,MAAM,EAAE,EAChB,iBAAiB,MAAM;;;OAMpB;IAEE,MAAM,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAWnD;IAEK,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,OAAO,CAAC,OAAO,CAAC,CAId;IAEE,OAAO,GACZ,QAAQ,MAAM,EACd,QAAO,MAAY,EACnB,SAAQ,MAAU,KACjB,OAAO,CAAC,eAAe,CAAC,CAItB;IAEE,IAAI,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAI9C;IAEE,KAAK,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAOhD;IAEA,IAAI,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;CACR"}
1
+ {"version":3,"file":"karboai.d.ts","sourceRoot":"","sources":["../../src/core/karboai.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,eAAe,EAEf,UAAU,EAQX,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EAAE,OAAO,EAAiB,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,IAAI,EAAc,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,MAAM,EAAE,WAAW;IAQ/B,IAAI,EAAE,WAEL;IAED,OAAO,CAAC,WAAW,CAcd;IAEE,EAAE,QAAa,OAAO,CAAC,UAAU,CAAC,CAIpC;IAEE,IAAI,GACT,QAAQ,MAAM,EACd,SAAS,MAAM,EACf,iBAAiB,MAAM;;;OAMpB;IAEE,KAAK,GACV,QAAQ,MAAM,EACd,QAAQ,MAAM,EAAE,EAChB,iBAAiB,MAAM;;;OAMpB;IAEE,MAAM,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC,CAWnD;IAEK,OAAO,GACZ,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,OAAO,CAAC,OAAO,CAAC,CAId;IAEE,OAAO,GACZ,QAAQ,MAAM,EACd,QAAO,MAAY,EACnB,SAAQ,MAAU,KACjB,OAAO,CAAC,eAAe,CAAC,CAItB;IAEE,IAAI,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAI9C;IAEE,KAAK,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAOhD;IAEA,IAAI,GAAU,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,OAAO,CAAC,OAAO,CAAC,CAO/D;IAEA,MAAM,GAAI,WAAU,eAAgC,KAAG,IAAI,CACZ;IAE/C,IAAI,GAAI,GAAG,SAAS,MAAM,EAAE,KAAG,IAAI,CACP;CACpC"}
@@ -11,13 +11,19 @@ const utils_1 = require("../utils/utils");
11
11
  const httptoolkit_1 = require("./httptoolkit");
12
12
  const message_1 = require("../schemas/karboai/message");
13
13
  const users_1 = require("../schemas/karboai/users");
14
+ const dispatcher_1 = require("./hub/dispatcher");
14
15
  class KarboAI {
15
16
  config;
16
17
  httptoolkit;
18
+ dispatcher;
17
19
  constructor(config) {
18
20
  this.config = config;
19
- this.httptoolkit = new httptoolkit_1.HttpToolKit(config.token);
20
- (0, logger_1.default)(!!config.enableLogging);
21
+ this.httptoolkit = new httptoolkit_1.HttpToolKit(this.config.token);
22
+ this.dispatcher = new dispatcher_1.Dispatcher(this);
23
+ (0, logger_1.default)(!!this.config.enableLogging);
24
+ }
25
+ get id() {
26
+ return this.config.id;
21
27
  }
22
28
  sendMessage = async (config) => await this.httptoolkit.post({
23
29
  path: '/bot/send-message',
@@ -74,5 +80,7 @@ class KarboAI {
74
80
  body: JSON.stringify({ user_id: userId }),
75
81
  schema: responses_1.OkResponseSchema,
76
82
  })).ok;
83
+ attach = (callback = async () => { }) => this.dispatcher.attach(this.config.token, callback);
84
+ bind = (...routers) => this.dispatcher.bind(...routers);
77
85
  }
78
86
  exports.KarboAI = KarboAI;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
+ export { Router } from './core/hub/router';
1
2
  export { KarboAI } from './core/karboai';
3
+ export * from './schemas/index';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,cAAc,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,22 @@
1
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
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KarboAI = void 0;
17
+ exports.KarboAI = exports.Router = void 0;
18
+ var router_1 = require("./core/hub/router");
19
+ Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return router_1.Router; } });
4
20
  var karboai_1 = require("./core/karboai");
5
21
  Object.defineProperty(exports, "KarboAI", { enumerable: true, get: function () { return karboai_1.KarboAI; } });
22
+ __exportStar(require("./schemas/index"), exports);
@@ -0,0 +1,4 @@
1
+ export { KarboContext } from './sockets';
2
+ export { Message } from './karboai/message';
3
+ export { User, Author, Member } from './karboai/users';
4
+ //# 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,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,32 +1,108 @@
1
1
  import { z } from 'zod';
2
- export declare const MessageSchema: z.ZodObject<{
2
+ export declare const MessageSchema: z.ZodPipe<z.ZodObject<{
3
3
  message_id: z.ZodString;
4
4
  chat_id: z.ZodString;
5
- user_id: z.ZodString;
6
5
  content: z.ZodString;
7
- created_time: z.ZodString;
6
+ created_time: z.ZodNumber;
8
7
  type: z.ZodNumber;
9
8
  reply_message_id: z.ZodNullable<z.ZodString>;
10
- audio: z.ZodNullable<z.ZodString>;
11
- sticker: z.ZodNullable<z.ZodString>;
9
+ audio: z.ZodNullable<z.ZodOptional<z.ZodString>>;
10
+ sticker: z.ZodOptional<z.ZodNullable<z.ZodString>>;
12
11
  images: z.ZodArray<z.ZodString>;
12
+ audio_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
13
+ waveform: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
+ video_note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
15
+ video_note_duration_ms: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
16
+ transparent: z.ZodOptional<z.ZodBoolean>;
17
+ bubble_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
18
+ bubble_version: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
19
+ reactions: z.ZodOptional<z.ZodArray<z.ZodAny>>;
13
20
  author: z.ZodPipe<z.ZodObject<{
14
21
  user_id: z.ZodString;
15
22
  nickname: z.ZodString;
16
- avatar: z.ZodString;
17
- role: z.ZodNumber;
18
- short_info: z.ZodString;
23
+ avatar_url: z.ZodString;
24
+ avatar_frame: z.ZodOptional<z.ZodNullable<z.ZodObject<{}, z.core.$strip>>>;
25
+ role: z.ZodOptional<z.ZodNumber>;
26
+ app_role: z.ZodOptional<z.ZodNumber>;
27
+ panel_color: z.ZodOptional<z.ZodString>;
28
+ level: z.ZodOptional<z.ZodNumber>;
29
+ nickname_color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ nickname_emoji: z.ZodOptional<z.ZodNullable<z.ZodString>>;
19
31
  }, z.core.$strip>, z.ZodTransform<{
20
32
  userId: string;
21
33
  nickname: string;
22
- avatar: string;
34
+ avatarUrl: string;
35
+ avatarFrame: Record<string, never> | null | undefined;
36
+ role: number | undefined;
37
+ appRole: number | undefined;
38
+ panelColor: string | undefined;
39
+ level: number | undefined;
40
+ nicknameColor: string | null | undefined;
41
+ nicknameEmoji: string | null | undefined;
23
42
  }, {
24
43
  user_id: string;
25
44
  nickname: string;
26
- avatar: string;
27
- role: number;
28
- short_info: string;
45
+ avatar_url: string;
46
+ avatar_frame?: Record<string, never> | null | undefined;
47
+ role?: number | undefined;
48
+ app_role?: number | undefined;
49
+ panel_color?: string | undefined;
50
+ level?: number | undefined;
51
+ nickname_color?: string | null | undefined;
52
+ nickname_emoji?: string | null | undefined;
29
53
  }>>;
30
- }, z.core.$strip>;
54
+ }, z.core.$strip>, z.ZodTransform<{
55
+ messageId: string;
56
+ chatId: string;
57
+ content: string;
58
+ createdTime: number;
59
+ type: number;
60
+ replyMessageId: string | null;
61
+ audio: string | null | undefined;
62
+ sticker: string | null | undefined;
63
+ images: string[];
64
+ author: {
65
+ userId: string;
66
+ nickname: string;
67
+ avatarUrl: string;
68
+ avatarFrame: Record<string, never> | null | undefined;
69
+ role: number | undefined;
70
+ appRole: number | undefined;
71
+ panelColor: string | undefined;
72
+ level: number | undefined;
73
+ nicknameColor: string | null | undefined;
74
+ nicknameEmoji: string | null | undefined;
75
+ };
76
+ }, {
77
+ message_id: string;
78
+ chat_id: string;
79
+ content: string;
80
+ created_time: number;
81
+ type: number;
82
+ reply_message_id: string | null;
83
+ images: string[];
84
+ author: {
85
+ userId: string;
86
+ nickname: string;
87
+ avatarUrl: string;
88
+ avatarFrame: Record<string, never> | null | undefined;
89
+ role: number | undefined;
90
+ appRole: number | undefined;
91
+ panelColor: string | undefined;
92
+ level: number | undefined;
93
+ nicknameColor: string | null | undefined;
94
+ nicknameEmoji: string | null | undefined;
95
+ };
96
+ audio?: string | null | undefined;
97
+ sticker?: string | null | undefined;
98
+ audio_duration_ms?: number | null | undefined;
99
+ waveform?: string | null | undefined;
100
+ video_note?: string | null | undefined;
101
+ video_note_duration_ms?: number | null | undefined;
102
+ transparent?: boolean | undefined;
103
+ bubble_id?: string | null | undefined;
104
+ bubble_version?: number | null | undefined;
105
+ reactions?: any[] | undefined;
106
+ }>>;
31
107
  export type Message = z.infer<typeof MessageSchema>;
32
108
  //# sourceMappingURL=message.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/schemas/karboai/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAYxB,CAAC;AAEH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/schemas/karboai/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCtB,CAAC;AAEL,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
@@ -3,16 +3,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MessageSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const users_1 = require("./users");
6
- exports.MessageSchema = zod_1.z.object({
6
+ exports.MessageSchema = zod_1.z
7
+ .object({
7
8
  message_id: zod_1.z.string(),
8
9
  chat_id: zod_1.z.string(),
9
- user_id: zod_1.z.string(),
10
10
  content: zod_1.z.string(),
11
- created_time: zod_1.z.string(),
11
+ created_time: zod_1.z.number(),
12
12
  type: zod_1.z.number(),
13
13
  reply_message_id: zod_1.z.string().nullable(),
14
- audio: zod_1.z.string().nullable(),
15
- sticker: zod_1.z.string().nullable(),
14
+ audio: zod_1.z.string().optional().nullable(),
15
+ sticker: zod_1.z.string().nullable().optional(),
16
16
  images: zod_1.z.array(zod_1.z.string()),
17
+ audio_duration_ms: zod_1.z.number().nullable().optional(),
18
+ waveform: zod_1.z.string().nullable().optional(),
19
+ video_note: zod_1.z.string().nullable().optional(),
20
+ video_note_duration_ms: zod_1.z.number().nullable().optional(),
21
+ transparent: zod_1.z.boolean().optional(),
22
+ bubble_id: zod_1.z.string().nullable().optional(),
23
+ bubble_version: zod_1.z.number().nullable().optional(),
24
+ reactions: zod_1.z.array(zod_1.z.any()).optional(),
17
25
  author: users_1.AuthorSchema,
26
+ })
27
+ .transform((data) => {
28
+ return {
29
+ messageId: data.message_id,
30
+ chatId: data.chat_id,
31
+ content: data.content,
32
+ createdTime: data.created_time,
33
+ type: data.type,
34
+ replyMessageId: data.reply_message_id,
35
+ audio: data.audio,
36
+ sticker: data.sticker,
37
+ images: data.images,
38
+ author: data.author,
39
+ };
18
40
  });
@@ -39,19 +39,36 @@ export declare const MemberSchema: z.ZodPipe<z.ZodObject<{
39
39
  export declare const AuthorSchema: z.ZodPipe<z.ZodObject<{
40
40
  user_id: z.ZodString;
41
41
  nickname: z.ZodString;
42
- avatar: z.ZodString;
43
- role: z.ZodNumber;
44
- short_info: z.ZodString;
42
+ avatar_url: z.ZodString;
43
+ avatar_frame: z.ZodOptional<z.ZodNullable<z.ZodObject<{}, z.core.$strip>>>;
44
+ role: z.ZodOptional<z.ZodNumber>;
45
+ app_role: z.ZodOptional<z.ZodNumber>;
46
+ panel_color: z.ZodOptional<z.ZodString>;
47
+ level: z.ZodOptional<z.ZodNumber>;
48
+ nickname_color: z.ZodOptional<z.ZodNullable<z.ZodString>>;
49
+ nickname_emoji: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
50
  }, z.core.$strip>, z.ZodTransform<{
46
51
  userId: string;
47
52
  nickname: string;
48
- avatar: string;
53
+ avatarUrl: string;
54
+ avatarFrame: Record<string, never> | null | undefined;
55
+ role: number | undefined;
56
+ appRole: number | undefined;
57
+ panelColor: string | undefined;
58
+ level: number | undefined;
59
+ nicknameColor: string | null | undefined;
60
+ nicknameEmoji: string | null | undefined;
49
61
  }, {
50
62
  user_id: string;
51
63
  nickname: string;
52
- avatar: string;
53
- role: number;
54
- short_info: string;
64
+ avatar_url: string;
65
+ avatar_frame?: Record<string, never> | null | undefined;
66
+ role?: number | undefined;
67
+ app_role?: number | undefined;
68
+ panel_color?: string | undefined;
69
+ level?: number | undefined;
70
+ nickname_color?: string | null | undefined;
71
+ nickname_emoji?: string | null | undefined;
55
72
  }>>;
56
73
  export type User = z.infer<typeof UserSchema>;
57
74
  export type Member = z.infer<typeof MemberSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/schemas/karboai/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;GAQrB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;GAOvB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;GAMvB,CAAC;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
1
+ {"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/schemas/karboai/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;GAQrB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;GAOvB,CAAC;AAEH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BrB,CAAC;AAEL,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAClD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC"}
@@ -26,10 +26,30 @@ exports.MemberSchema = BasicUserSchema.transform((data) => {
26
26
  role: data.role,
27
27
  };
28
28
  });
29
- exports.AuthorSchema = BasicUserSchema.transform((data) => {
29
+ exports.AuthorSchema = zod_1.z
30
+ .object({
31
+ user_id: zod_1.z.string(),
32
+ nickname: zod_1.z.string(),
33
+ avatar_url: zod_1.z.string(),
34
+ avatar_frame: zod_1.z.object().nullable().optional(),
35
+ role: zod_1.z.number().optional(),
36
+ app_role: zod_1.z.number().optional(),
37
+ panel_color: zod_1.z.string().optional(),
38
+ level: zod_1.z.number().optional(),
39
+ nickname_color: zod_1.z.string().nullable().optional(),
40
+ nickname_emoji: zod_1.z.string().nullable().optional(),
41
+ })
42
+ .transform((data) => {
30
43
  return {
31
44
  userId: data.user_id,
32
45
  nickname: data.nickname,
33
- avatar: data.avatar,
46
+ avatarUrl: data.avatar_url,
47
+ avatarFrame: data.avatar_frame,
48
+ role: data.role,
49
+ appRole: data.app_role,
50
+ panelColor: data.panel_color,
51
+ level: data.level,
52
+ nicknameColor: data.nickname_color,
53
+ nicknameEmoji: data.nickname_emoji,
34
54
  };
35
55
  });
@@ -0,0 +1,16 @@
1
+ import { SOCKET_TOPICS } from '../constants';
2
+ import { KarboAI } from '../core/karboai';
3
+ import { Message } from './karboai/message';
4
+ export type KarboContext = {
5
+ karbo: KarboAI;
6
+ message: Message;
7
+ };
8
+ export type SocketCallback = (context: KarboContext) => Promise<void>;
9
+ export type SocketMiddleware = (context: KarboContext) => Promise<boolean | undefined>;
10
+ export type ConnectCallback = () => Promise<void>;
11
+ export type SocketEvent = (typeof SOCKET_TOPICS)[keyof typeof SOCKET_TOPICS];
12
+ export type Listener = {
13
+ callback: SocketCallback;
14
+ middlewares: SocketMiddleware[];
15
+ };
16
+ //# sourceMappingURL=sockets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sockets.d.ts","sourceRoot":"","sources":["../../src/schemas/sockets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,MAAM,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC;AAEhE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAC7B,OAAO,EAAE,YAAY,KAClB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;AAClC,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAClD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAE7E,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,2 +1,3 @@
1
1
  export declare const clean: (body: Record<string, any>) => Record<string, any>;
2
+ export declare const generateRouterName: () => string;
2
3
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAGjE,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAGjE,CAAC;AAEJ,eAAO,MAAM,kBAAkB,QAAO,MACkB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.clean = void 0;
3
+ exports.generateRouterName = exports.clean = void 0;
4
4
  const clean = (body) => Object.fromEntries(Object.entries(body).filter(([_, value]) => value !== undefined));
5
5
  exports.clean = clean;
6
+ const generateRouterName = () => `router-${Math.random().toString(36).substring(2, 9)}`;
7
+ exports.generateRouterName = generateRouterName;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "karboai",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "A powerful lib for https://karboai.com",
5
5
  "keywords": [
6
6
  "karbo",