@blurose/baileys 1.1.21 → 1.1.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +268 -0
  2. package/WAProto/WAProto.proto +16 -0
  3. package/WAProto/index.d.ts +1830 -4263
  4. package/WAProto/index.js +32527 -29313
  5. package/lib/Defaults/index.js +1 -1
  6. package/lib/Socket/business.d.ts.map +1 -1
  7. package/lib/Socket/communities.d.ts.map +1 -1
  8. package/lib/Socket/groups.d.ts.map +1 -1
  9. package/lib/Socket/groups.js +8 -6
  10. package/lib/Socket/groups.js.map +1 -1
  11. package/lib/Socket/index.d.ts.map +1 -1
  12. package/lib/Socket/messages-recv.d.ts.map +1 -1
  13. package/lib/Socket/messages-recv.js +5 -2
  14. package/lib/Socket/messages-recv.js.map +1 -1
  15. package/lib/Socket/messages-send.d.ts.map +1 -1
  16. package/lib/Socket/messages-send.js +72 -1
  17. package/lib/Socket/messages-send.js.map +1 -1
  18. package/lib/Types/Events.d.ts +1 -0
  19. package/lib/Types/Events.d.ts.map +1 -1
  20. package/lib/Types/Message.d.ts +12 -7
  21. package/lib/Types/Message.d.ts.map +1 -1
  22. package/lib/Utils/a2ui.d.ts +45 -1
  23. package/lib/Utils/a2ui.d.ts.map +1 -1
  24. package/lib/Utils/a2ui.js +217 -1
  25. package/lib/Utils/a2ui.js.map +1 -1
  26. package/lib/Utils/generics.js +1 -1
  27. package/lib/Utils/history.d.ts +2 -2
  28. package/lib/Utils/html-apps.d.ts +30 -0
  29. package/lib/Utils/html-apps.d.ts.map +1 -0
  30. package/lib/Utils/html-apps.js +99 -0
  31. package/lib/Utils/html-apps.js.map +1 -0
  32. package/lib/Utils/html-multiplayer.d.ts +10 -0
  33. package/lib/Utils/html-multiplayer.d.ts.map +1 -0
  34. package/lib/Utils/html-multiplayer.js +90 -0
  35. package/lib/Utils/html-multiplayer.js.map +1 -0
  36. package/lib/Utils/index.d.ts +9 -0
  37. package/lib/Utils/index.d.ts.map +1 -1
  38. package/lib/Utils/index.js +9 -0
  39. package/lib/Utils/index.js.map +1 -1
  40. package/lib/Utils/mbuilder-airich.d.ts +124 -0
  41. package/lib/Utils/mbuilder-airich.d.ts.map +1 -0
  42. package/lib/Utils/mbuilder-airich.js +960 -0
  43. package/lib/Utils/mbuilder-airich.js.map +1 -0
  44. package/lib/Utils/mbuilder-base.d.ts +32 -0
  45. package/lib/Utils/mbuilder-base.d.ts.map +1 -0
  46. package/lib/Utils/mbuilder-base.js +65 -0
  47. package/lib/Utils/mbuilder-base.js.map +1 -0
  48. package/lib/Utils/mbuilder-buttonv2.d.ts +27 -0
  49. package/lib/Utils/mbuilder-buttonv2.d.ts.map +1 -0
  50. package/lib/Utils/mbuilder-buttonv2.js +165 -0
  51. package/lib/Utils/mbuilder-buttonv2.js.map +1 -0
  52. package/lib/Utils/mbuilder-carousel.d.ts +21 -0
  53. package/lib/Utils/mbuilder-carousel.d.ts.map +1 -0
  54. package/lib/Utils/mbuilder-carousel.js +120 -0
  55. package/lib/Utils/mbuilder-carousel.js.map +1 -0
  56. package/lib/Utils/mbuilder-toolkit.d.ts +90 -0
  57. package/lib/Utils/mbuilder-toolkit.d.ts.map +1 -0
  58. package/lib/Utils/mbuilder-toolkit.js +266 -0
  59. package/lib/Utils/mbuilder-toolkit.js.map +1 -0
  60. package/lib/Utils/mbuilder-utils.d.ts +69 -0
  61. package/lib/Utils/mbuilder-utils.d.ts.map +1 -0
  62. package/lib/Utils/mbuilder-utils.js +214 -0
  63. package/lib/Utils/mbuilder-utils.js.map +1 -0
  64. package/lib/Utils/messages.d.ts +1 -0
  65. package/lib/Utils/messages.d.ts.map +1 -1
  66. package/lib/Utils/messages.js +66 -9
  67. package/lib/Utils/messages.js.map +1 -1
  68. package/lib/Utils/scheduled-message.d.ts +75 -0
  69. package/lib/Utils/scheduled-message.d.ts.map +1 -0
  70. package/lib/Utils/scheduled-message.js +101 -0
  71. package/lib/Utils/scheduled-message.js.map +1 -0
  72. package/lib/Utils/use-multi-file-auth-state.d.ts +1 -7
  73. package/lib/Utils/use-multi-file-auth-state.d.ts.map +1 -1
  74. package/lib/Utils/use-multi-file-auth-state.js +39 -47
  75. package/lib/Utils/use-multi-file-auth-state.js.map +1 -1
  76. package/lib/index.d.ts +1 -0
  77. package/lib/index.d.ts.map +1 -1
  78. package/lib/index.js +1 -0
  79. package/lib/index.js.map +1 -1
  80. package/package.json +3 -2
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Do not remove this watermark.
3
+ *
4
+ * NIXCODE - Advanced WhatsApp Interactive Message Builder
5
+ * Created by Nixel
6
+ * Contributors: ~ Ahmad tumbuh kembang
7
+ *
8
+ * Copyright (c) 2026 Nixel
9
+ * Permission is granted to use and modify this library for personal or commercial projects.
10
+ * Reuploading, reselling, or redistributing as a standalone product is prohibited.
11
+ */
12
+ /**
13
+ * Toolkit — kumpulan static helper untuk proses media sebelum dikirim ke WA.
14
+ *
15
+ * Semua method static, tidak perlu new Toolkit().
16
+ *
17
+ * Contoh:
18
+ * const thumb = await Toolkit.getMp4Preview(videoBuffer)
19
+ * const buf = await Toolkit.fetchBuffer('https://...')
20
+ * const url = await Toolkit.toUrl(conn, imageBuffer, 'image')
21
+ */
22
+ declare class Toolkit {
23
+ constructor();
24
+ /** Delegate ke extractIE dari mbuilder-utils */
25
+ static extractIE(text: string, opts?: any): {
26
+ text: string;
27
+ ie: any[];
28
+ inline_entities: any[];
29
+ };
30
+ /** Delegate ke waitAllPromises dari mbuilder-utils */
31
+ static waitAllPromises(input: any): Promise<any>;
32
+ /**
33
+ * Resize gambar (Buffer) ke dimensi x × y.
34
+ * Output: PNG Buffer.
35
+ * fit: 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
36
+ */
37
+ static resize(buffer: Buffer, x: number, y: number, fit?: any): Promise<Buffer>;
38
+ /**
39
+ * Fetch URL → Buffer.
40
+ * silent=true (default): return Buffer kosong jika gagal, tanpa throw.
41
+ * silent=false: throw jika HTTP error atau network error.
42
+ */
43
+ static fetchBuffer(url: string, options?: RequestInit, { silent }?: {
44
+ silent?: boolean | undefined;
45
+ }): Promise<Buffer>;
46
+ /**
47
+ * Upload Buffer atau URL ke CDN WhatsApp dan return URL CDN-nya.
48
+ * Berguna untuk mendapat URL media yang bisa dipakai di interactiveMessage header.
49
+ */
50
+ static toUrl(_client: any, path: Buffer | string, mediaType?: string): Promise<string | undefined>;
51
+ /**
52
+ * Resolve media (URL / Buffer / base64 string) menjadi format yang diinginkan.
53
+ *
54
+ * result: 'url' | 'buffer' | 'base64'
55
+ * resolveUrl: true = fetch URL jadi Buffer dulu sebelum upload ke CDN
56
+ * resolveWAUrl: true = fetch WA CDN URL jadi Buffer
57
+ * resize: true = resize ke width × height sebelum return
58
+ */
59
+ static resolveMedia(_client: any, media: any, mediaType?: string, { resolveUrl, resolveWAUrl, result, resize, width, height }?: {
60
+ resolveUrl?: boolean | undefined;
61
+ resolveWAUrl?: boolean | undefined;
62
+ result?: string | undefined;
63
+ resize?: boolean | undefined;
64
+ width?: number | undefined;
65
+ height?: number | undefined;
66
+ }): Promise<any>;
67
+ /**
68
+ * Baca durasi video MP4 dari Buffer tanpa ffmpeg.
69
+ * Parsing langsung atom moov/mvhd di binary MP4.
70
+ * silent=true (default): return 0 jika gagal.
71
+ */
72
+ static getMp4Duration(buffer: Buffer, { silent }?: {
73
+ silent?: boolean | undefined;
74
+ }): number;
75
+ /**
76
+ * Ambil frame dari video MP4 Buffer sebagai gambar (thumbnail).
77
+ * time: detik ke-berapa frame diambil (default: 20% durasi video, max 10 detik)
78
+ * result: 'buffer' | 'base64'
79
+ * resize: true = resize ke width × height
80
+ * silent: true = return buffer kosong jika gagal (tidak throw)
81
+ */
82
+ static getMp4Preview(videoBuffer: Buffer, { time, result, resize, width, height, silent }?: any): Promise<Buffer | string>;
83
+ /**
84
+ * JSON.stringify dengan unicode escape untuk karakter non-ASCII.
85
+ * Berguna saat payload dikirim ke endpoint yang strict soal encoding.
86
+ */
87
+ static stringifyEscaped(obj: any): string;
88
+ }
89
+ export { Toolkit };
90
+ //# sourceMappingURL=mbuilder-toolkit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mbuilder-toolkit.d.ts","sourceRoot":"","sources":["../../src/Utils/mbuilder-toolkit.ts"],"names":[],"mappings":"AACA;;;;;;;;;;GAUG;AAUH;;;;;;;;;GASG;AACH,cAAM,OAAO;;IAGZ,gDAAgD;IAChD,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;;;;;IAIzC,sDAAsD;WACzC,eAAe,CAAC,KAAK,EAAE,GAAG;IAIvC;;;;OAIG;WACU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,GAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAW9F;;;;OAIG;WACU,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,WAAgB,EAAE,EAAE,MAAa,EAAE;;KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;IAWzG;;;OAGG;WACU,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,SAAa,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAe5G;;;;;;;OAOG;WACU,YAAY,CACxB,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,GAAG,EACV,SAAS,SAAU,EACnB,EAAE,UAAkB,EAAE,YAAoB,EAAE,MAAc,EAAE,MAAc,EAAE,KAAW,EAAE,MAAY,EAAE;;;;;;;KAAK,GAC1G,OAAO,CAAC,GAAG,CAAC;IA+Cf;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,MAAa,EAAE;;KAAK,GAAG,MAAM;IAwDrE;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CACnB,WAAW,EAAE,MAAM,EACnB,EAAE,IAAI,EAAE,MAAiB,EAAE,MAAa,EAAE,KAAW,EAAE,MAAY,EAAE,MAAa,EAAE,GAAE,GAAQ,GAC5F,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IA4C3B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM;CAKzC;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,266 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Do not remove this watermark.
4
+ *
5
+ * NIXCODE - Advanced WhatsApp Interactive Message Builder
6
+ * Created by Nixel
7
+ * Contributors: ~ Ahmad tumbuh kembang
8
+ *
9
+ * Copyright (c) 2026 Nixel
10
+ * Permission is granted to use and modify this library for personal or commercial projects.
11
+ * Reuploading, reselling, or redistributing as a standalone product is prohibited.
12
+ */
13
+ 'use strict';
14
+ import sharp from 'sharp';
15
+ import ffmpeg from 'fluent-ffmpeg';
16
+ import { PassThrough, Readable } from 'stream';
17
+ import { prepareWAMessageMedia } from 'baileys';
18
+ import { extractIE, waitAllPromises } from './mbuilder-utils.js';
19
+ /**
20
+ * Toolkit — kumpulan static helper untuk proses media sebelum dikirim ke WA.
21
+ *
22
+ * Semua method static, tidak perlu new Toolkit().
23
+ *
24
+ * Contoh:
25
+ * const thumb = await Toolkit.getMp4Preview(videoBuffer)
26
+ * const buf = await Toolkit.fetchBuffer('https://...')
27
+ * const url = await Toolkit.toUrl(conn, imageBuffer, 'image')
28
+ */
29
+ class Toolkit {
30
+ constructor() { }
31
+ /** Delegate ke extractIE dari mbuilder-utils */
32
+ static extractIE(text, opts) {
33
+ return extractIE(text, opts);
34
+ }
35
+ /** Delegate ke waitAllPromises dari mbuilder-utils */
36
+ static async waitAllPromises(input) {
37
+ return await waitAllPromises(input);
38
+ }
39
+ /**
40
+ * Resize gambar (Buffer) ke dimensi x × y.
41
+ * Output: PNG Buffer.
42
+ * fit: 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
43
+ */
44
+ static async resize(buffer, x, y, fit = 'cover') {
45
+ return await sharp(buffer)
46
+ .resize(x, y, {
47
+ fit,
48
+ position: 'center',
49
+ background: { r: 0, g: 0, b: 0, alpha: 0 },
50
+ })
51
+ .png()
52
+ .toBuffer();
53
+ }
54
+ /**
55
+ * Fetch URL → Buffer.
56
+ * silent=true (default): return Buffer kosong jika gagal, tanpa throw.
57
+ * silent=false: throw jika HTTP error atau network error.
58
+ */
59
+ static async fetchBuffer(url, options = {}, { silent = true } = {}) {
60
+ try {
61
+ const response = await fetch(url, options);
62
+ if (!response.ok)
63
+ throw new Error(`HTTP ${response.status}`);
64
+ return Buffer.from(await response.arrayBuffer());
65
+ }
66
+ catch (error) {
67
+ if (silent)
68
+ return Buffer.alloc(0);
69
+ throw error;
70
+ }
71
+ }
72
+ /**
73
+ * Upload Buffer atau URL ke CDN WhatsApp dan return URL CDN-nya.
74
+ * Berguna untuk mendapat URL media yang bisa dipakai di interactiveMessage header.
75
+ */
76
+ static async toUrl(_client, path, mediaType = 'document') {
77
+ if (!path)
78
+ throw new Error('Url or buffer needed');
79
+ const media = await prepareWAMessageMedia({ [mediaType]: Buffer.isBuffer(path) ? path : { url: path } }, {
80
+ upload: _client.waUploadToServer,
81
+ // @newsletter = bypass enkripsi CDN
82
+ jid: '\u0040\u006e\u0065\u0077\u0073\u006c\u0065\u0074\u0074\u0065\u0072',
83
+ });
84
+ return Object.values(media)[0]?.url;
85
+ }
86
+ /**
87
+ * Resolve media (URL / Buffer / base64 string) menjadi format yang diinginkan.
88
+ *
89
+ * result: 'url' | 'buffer' | 'base64'
90
+ * resolveUrl: true = fetch URL jadi Buffer dulu sebelum upload ke CDN
91
+ * resolveWAUrl: true = fetch WA CDN URL jadi Buffer
92
+ * resize: true = resize ke width × height sebelum return
93
+ */
94
+ static async resolveMedia(_client, media, mediaType = 'image', { resolveUrl = false, resolveWAUrl = false, result = 'url', resize = false, width = 300, height = 300 } = {}) {
95
+ const isUrl = (str) => /^https?:\/\/.+/i.test(str);
96
+ const isWAUrl = (str) => /^https?:\/\/[^/]*\.whatsapp\.net\//i.test(str);
97
+ if (Array.isArray(media)) {
98
+ return Promise.all(media.map((item) => Toolkit.resolveMedia(_client, item, mediaType, { resolveUrl, resolveWAUrl, result, resize, width, height })));
99
+ }
100
+ const originalIsBuffer = Buffer.isBuffer(media);
101
+ if (typeof media === 'string' && isUrl(media)) {
102
+ if (isWAUrl(media)) {
103
+ if (resolveWAUrl) {
104
+ media = await Toolkit.fetchBuffer(media, {}, { silent: true });
105
+ }
106
+ else if (!resolveUrl) {
107
+ if (result === 'url')
108
+ return media;
109
+ media = await Toolkit.fetchBuffer(media, {}, { silent: true });
110
+ }
111
+ }
112
+ else {
113
+ if (!resolveUrl) {
114
+ if (result === 'url')
115
+ return media;
116
+ media = await Toolkit.fetchBuffer(media, {}, { silent: true });
117
+ }
118
+ else {
119
+ media = await Toolkit.fetchBuffer(media, {}, { silent: true });
120
+ }
121
+ }
122
+ }
123
+ if (typeof media === 'string' && !isUrl(media)) {
124
+ media = Buffer.from(media, 'base64');
125
+ }
126
+ if (!Buffer.isBuffer(media) || !media.length)
127
+ return;
128
+ if (resize && Buffer.isBuffer(media)) {
129
+ media = await Toolkit.resize(media, width, height);
130
+ }
131
+ if (result === 'buffer')
132
+ return media;
133
+ if (result === 'base64')
134
+ return media.toString('base64');
135
+ // Upload ke CDN WA
136
+ return Toolkit.toUrl(_client, media, mediaType);
137
+ }
138
+ /**
139
+ * Baca durasi video MP4 dari Buffer tanpa ffmpeg.
140
+ * Parsing langsung atom moov/mvhd di binary MP4.
141
+ * silent=true (default): return 0 jika gagal.
142
+ */
143
+ static getMp4Duration(buffer, { silent = true } = {}) {
144
+ try {
145
+ if (!Buffer.isBuffer(buffer) || buffer.length < 8) {
146
+ if (silent)
147
+ return 0;
148
+ throw new Error('Invalid buffer');
149
+ }
150
+ let offset = 0;
151
+ while (offset < buffer.length - 8) {
152
+ const size = buffer.readUInt32BE(offset);
153
+ if (size < 8 || offset + size > buffer.length) {
154
+ if (silent)
155
+ return 0;
156
+ throw new Error('Invalid atom size');
157
+ }
158
+ const type = buffer.toString('ascii', offset + 4, offset + 8);
159
+ if (type === 'moov') {
160
+ let moovOffset = offset + 8;
161
+ const moovEnd = offset + size;
162
+ while (moovOffset < moovEnd - 8) {
163
+ const childSize = buffer.readUInt32BE(moovOffset);
164
+ if (childSize < 8 || moovOffset + childSize > moovEnd) {
165
+ if (silent)
166
+ return 0;
167
+ throw new Error('Invalid child atom size');
168
+ }
169
+ const childType = buffer.toString('ascii', moovOffset + 4, moovOffset + 8);
170
+ if (childType === 'mvhd') {
171
+ const version = buffer.readUInt8(moovOffset + 8);
172
+ if (version === 0) {
173
+ const timescale = buffer.readUInt32BE(moovOffset + 20);
174
+ const duration = buffer.readUInt32BE(moovOffset + 24);
175
+ if (!timescale) {
176
+ if (silent)
177
+ return 0;
178
+ throw new Error('Invalid timescale');
179
+ }
180
+ return duration / timescale;
181
+ }
182
+ if (version === 1) {
183
+ const timescale = buffer.readUInt32BE(moovOffset + 32);
184
+ const duration = Number(buffer.readBigUInt64BE(moovOffset + 36));
185
+ if (!timescale) {
186
+ if (silent)
187
+ return 0;
188
+ throw new Error('Invalid timescale');
189
+ }
190
+ return duration / timescale;
191
+ }
192
+ }
193
+ moovOffset += childSize;
194
+ }
195
+ }
196
+ offset += size;
197
+ }
198
+ if (silent)
199
+ return 0;
200
+ throw new Error('No mvhd found!');
201
+ }
202
+ catch (err) {
203
+ if (silent)
204
+ return 0;
205
+ throw err;
206
+ }
207
+ }
208
+ /**
209
+ * Ambil frame dari video MP4 Buffer sebagai gambar (thumbnail).
210
+ * time: detik ke-berapa frame diambil (default: 20% durasi video, max 10 detik)
211
+ * result: 'buffer' | 'base64'
212
+ * resize: true = resize ke width × height
213
+ * silent: true = return buffer kosong jika gagal (tidak throw)
214
+ */
215
+ static getMp4Preview(videoBuffer, { time, result = 'buffer', resize = true, width = 300, height = 300, silent = true } = {}) {
216
+ return new Promise((resolve, reject) => {
217
+ const fail = (err) => {
218
+ if (silent)
219
+ return resolve(result === 'base64' ? '' : Buffer.alloc(0));
220
+ return reject(err);
221
+ };
222
+ try {
223
+ if (!Buffer.isBuffer(videoBuffer) || !videoBuffer.length) {
224
+ return fail(new Error('videoBuffer tidak valid atau kosong'));
225
+ }
226
+ const inputStream = new Readable({ read() { } });
227
+ inputStream.push(videoBuffer);
228
+ inputStream.push(null);
229
+ const outputStream = new PassThrough();
230
+ const chunks = [];
231
+ outputStream.on('data', (chunk) => chunks.push(chunk));
232
+ outputStream.on('end', async () => {
233
+ try {
234
+ let output = Buffer.concat(chunks);
235
+ if (!output.length)
236
+ return fail(new Error('Output kosong — cek format atau timestamp video'));
237
+ if (resize)
238
+ output = await Toolkit.resize(output, width, height);
239
+ return resolve(result === 'base64' ? output.toString('base64') : output);
240
+ }
241
+ catch (err) {
242
+ return fail(err);
243
+ }
244
+ });
245
+ outputStream.on('error', fail);
246
+ const t = time ?? Math.min(Toolkit.getMp4Duration(videoBuffer) * 0.2, 10);
247
+ ffmpeg(inputStream)
248
+ .outputOptions([`-ss ${t}`, '-vframes 1', '-vcodec png', '-f image2pipe'])
249
+ .on('error', (err) => fail(new Error(`ffmpeg error: ${err.message}`)))
250
+ .pipe(outputStream, { end: true });
251
+ }
252
+ catch (err) {
253
+ return fail(err);
254
+ }
255
+ });
256
+ }
257
+ /**
258
+ * JSON.stringify dengan unicode escape untuk karakter non-ASCII.
259
+ * Berguna saat payload dikirim ke endpoint yang strict soal encoding.
260
+ */
261
+ static stringifyEscaped(obj) {
262
+ return JSON.stringify(obj).replace(/[\u007f-\uffff]/g, (c) => '\\u' + c.charCodeAt(0).toString(16).padStart(4, '0'));
263
+ }
264
+ }
265
+ export { Toolkit };
266
+ //# sourceMappingURL=mbuilder-toolkit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mbuilder-toolkit.js","sourceRoot":"","sources":["../../src/Utils/mbuilder-toolkit.ts"],"names":[],"mappings":"AAAA,cAAc;AACd;;;;;;;;;;GAUG;AAEH,YAAY,CAAC;AAEb,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE9D;;;;;;;;;GASG;AACH,MAAM,OAAO;IACZ,gBAAe,CAAC;IAEhB,gDAAgD;IAChD,MAAM,CAAC,SAAS,CAAC,IAAY,EAAE,IAAU;QACxC,OAAO,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,sDAAsD;IACtD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAU;QACtC,OAAO,MAAM,eAAe,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,CAAS,EAAE,CAAS,EAAE,MAAW,OAAO;QAC3E,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC;aACxB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE;YACb,GAAG;YACH,QAAQ,EAAE,QAAQ;YAClB,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;SAC1C,CAAC;aACD,GAAG,EAAE;aACL,QAAQ,EAAE,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAW,EAAE,UAAuB,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE;QACtF,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7D,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAY,EAAE,IAAqB,EAAE,SAAS,GAAG,UAAU;QAC7E,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEnD,MAAM,KAAK,GAAG,MAAM,qBAAqB,CACxC,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAC7D;YACC,MAAM,EAAE,OAAO,CAAC,gBAAgB;YAChC,oCAAoC;YACpC,GAAG,EAAE,oEAAoE;SACzE,CACD,CAAC;QAEF,OAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAS,EAAE,GAAG,CAAC;IAC9C,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,YAAY,CACxB,OAAY,EACZ,KAAU,EACV,SAAS,GAAG,OAAO,EACnB,EAAE,UAAU,GAAG,KAAK,EAAE,YAAY,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE;QAE5G,MAAM,KAAK,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEjF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,OAAO,CAAC,GAAG,CACjB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAChI,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/C,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpB,IAAI,YAAY,EAAE,CAAC;oBAClB,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;qBAAM,IAAI,CAAC,UAAU,EAAE,CAAC;oBACxB,IAAI,MAAM,KAAK,KAAK;wBAAE,OAAO,KAAK,CAAC;oBACnC,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,UAAU,EAAE,CAAC;oBACjB,IAAI,MAAM,KAAK,KAAK;wBAAE,OAAO,KAAK,CAAC;oBACnC,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACP,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChE,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAChD,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO;QAErD,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,KAAK,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACtC,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEzD,mBAAmB;QACnB,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,MAAc,EAAE,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC;YACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnD,IAAI,MAAM;oBAAE,OAAO,CAAC,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,OAAO,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;oBAC/C,IAAI,MAAM;wBAAE,OAAO,CAAC,CAAC;oBACrB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gBACtC,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC9D,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;oBACrB,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;oBAC5B,MAAM,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC;oBAE9B,OAAO,UAAU,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;wBACjC,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;wBAClD,IAAI,SAAS,GAAG,CAAC,IAAI,UAAU,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;4BACvD,IAAI,MAAM;gCAAE,OAAO,CAAC,CAAC;4BACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;wBAC5C,CAAC;wBACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;wBAC3E,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;4BAC1B,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;4BACjD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gCACnB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gCACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gCACtD,IAAI,CAAC,SAAS,EAAE,CAAC;oCAAC,IAAI,MAAM;wCAAE,OAAO,CAAC,CAAC;oCAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gCAAC,CAAC;gCAC/E,OAAO,QAAQ,GAAG,SAAS,CAAC;4BAC7B,CAAC;4BACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;gCACnB,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;gCACvD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;gCACjE,IAAI,CAAC,SAAS,EAAE,CAAC;oCAAC,IAAI,MAAM;wCAAE,OAAO,CAAC,CAAC;oCAAC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;gCAAC,CAAC;gCAC/E,OAAO,QAAQ,GAAG,SAAS,CAAC;4BAC7B,CAAC;wBACF,CAAC;wBACD,UAAU,IAAI,SAAS,CAAC;oBACzB,CAAC;gBACF,CAAC;gBACD,MAAM,IAAI,IAAI,CAAC;YAChB,CAAC;YAED,IAAI,MAAM;gBAAE,OAAO,CAAC,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,IAAI,MAAM;gBAAE,OAAO,CAAC,CAAC;YACrB,MAAM,GAAG,CAAC;QACX,CAAC;IACF,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CACnB,WAAmB,EACnB,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,GAAG,IAAI,KAAU,EAAE;QAE9F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACtC,MAAM,IAAI,GAAG,CAAC,GAAU,EAAE,EAAE;gBAC3B,IAAI,MAAM;oBAAE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC,CAAC;YAEF,IAAI,CAAC;gBACJ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC1D,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC/D,CAAC;gBAED,MAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,KAAI,CAAC,EAAE,CAAC,CAAC;gBAChD,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAEvB,MAAM,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAa,EAAE,CAAC;gBAE5B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvD,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;oBACjC,IAAI,CAAC;wBACJ,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACnC,IAAI,CAAC,MAAM,CAAC,MAAM;4BAAE,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC,CAAC;wBAC9F,IAAI,MAAM;4BAAE,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;wBACjE,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBAC1E,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACd,OAAO,IAAI,CAAC,GAAY,CAAC,CAAC;oBAC3B,CAAC;gBACF,CAAC,CAAC,CAAC;gBACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAE/B,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;gBAE1E,MAAM,CAAC,WAAW,CAAC;qBACjB,aAAa,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;qBACzE,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;qBAC5E,IAAI,CAAC,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC,GAAY,CAAC,CAAC;YAC3B,CAAC;QACF,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAQ;QAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5D,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACrD,CAAC;IACH,CAAC;CACD;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Do not remove this watermark.
3
+ *
4
+ * NIXCODE - Advanced WhatsApp Interactive Message Builder
5
+ * Built for creating buttons, carousels, native flows,
6
+ * and AI rich response payloads using Baileys with
7
+ * fluent chaining, flexible payload customization,
8
+ * and scalable architecture for modern bot development.
9
+ *
10
+ * Runtime:
11
+ * - Baileys: @whiskeysockets/baileys (latest)
12
+ *
13
+ * Created by Nixel
14
+ * Contributors: ~ Ahmad tumbuh kembang
15
+ *
16
+ * WhatsApp: wa.me/6285188349341
17
+ * Channel: https://whatsapp.com/channel/0029VbCV1ck8fewpdNb2TY2k
18
+ *
19
+ * Copyright (c) 2026 Nixel
20
+ *
21
+ * Permission is granted to use and modify this library
22
+ * for personal or commercial projects.
23
+ *
24
+ * Reuploading, reselling, relicensing, or redistributing
25
+ * this library as a standalone product is prohibited.
26
+ *
27
+ * Do not claim this project as your own original work.
28
+ */
29
+ /**
30
+ * Parser untuk inline entities di teks AiRich:
31
+ * - [teks](url) → hyperlink
32
+ * - [](url) → citation
33
+ * - [teks|w|h]<url> → latex image
34
+ *
35
+ * Prefix `!` di url = untrusted hyperlink, misal: [klik](!https://...)
36
+ */
37
+ declare function extractIE(text: string, { extract, hyperlink, citation, latex }?: {
38
+ extract?: boolean | undefined;
39
+ hyperlink?: boolean | undefined;
40
+ citation?: boolean | undefined;
41
+ latex?: boolean | undefined;
42
+ }): {
43
+ text: string;
44
+ ie: any[];
45
+ inline_entities: any[];
46
+ };
47
+ /**
48
+ * Resolve semua Promise secara rekursif di dalam object/array bersarang.
49
+ * Berguna untuk await semua nilai async sekaligus sebelum dilempar ke payload.
50
+ */
51
+ declare function waitAllPromises(input: any): Promise<any>;
52
+ declare class AIRichError extends Error {
53
+ code: string;
54
+ constructor(message: string, code: string, meta?: Record<string, any>);
55
+ }
56
+ declare class ItemNotFoundError extends AIRichError {
57
+ constructor(id: string, availableIds?: string[]);
58
+ }
59
+ declare class DuplicateIdError extends AIRichError {
60
+ constructor(id: string);
61
+ }
62
+ declare class InvalidTargetError extends AIRichError {
63
+ constructor(message: string, meta?: Record<string, any>);
64
+ }
65
+ declare class ContentValidationError extends AIRichError {
66
+ constructor(message: string, meta?: Record<string, any>);
67
+ }
68
+ export { extractIE, waitAllPromises, AIRichError, ItemNotFoundError, DuplicateIdError, InvalidTargetError, ContentValidationError, };
69
+ //# sourceMappingURL=mbuilder-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mbuilder-utils.d.ts","sourceRoot":"","sources":["../../src/Utils/mbuilder-utils.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAQH;;;;;;;GAOG;AACH,iBAAS,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAc,EAAE,SAAgB,EAAE,QAAe,EAAE,KAAY,EAAE;;;;;CAAK;;;;EAqHxG;AAED;;;GAGG;AACH,iBAAe,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAevD;AAID,cAAM,WAAY,SAAQ,KAAK;IAC9B,IAAI,EAAE,MAAM,CAAC;gBACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAMzE;AAED,cAAM,iBAAkB,SAAQ,WAAW;gBAC9B,EAAE,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO;CAQnD;AAED,cAAM,gBAAiB,SAAQ,WAAW;gBAC7B,EAAE,EAAE,MAAM;CAItB;AAED,cAAM,kBAAmB,SAAQ,WAAW;gBAC/B,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAI3D;AAED,cAAM,sBAAuB,SAAQ,WAAW;gBACnC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;CAI3D;AAED,OAAO,EACN,SAAS,EACT,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACtB,CAAC"}
@@ -0,0 +1,214 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Do not remove this watermark.
4
+ *
5
+ * NIXCODE - Advanced WhatsApp Interactive Message Builder
6
+ * Built for creating buttons, carousels, native flows,
7
+ * and AI rich response payloads using Baileys with
8
+ * fluent chaining, flexible payload customization,
9
+ * and scalable architecture for modern bot development.
10
+ *
11
+ * Runtime:
12
+ * - Baileys: @whiskeysockets/baileys (latest)
13
+ *
14
+ * Created by Nixel
15
+ * Contributors: ~ Ahmad tumbuh kembang
16
+ *
17
+ * WhatsApp: wa.me/6285188349341
18
+ * Channel: https://whatsapp.com/channel/0029VbCV1ck8fewpdNb2TY2k
19
+ *
20
+ * Copyright (c) 2026 Nixel
21
+ *
22
+ * Permission is granted to use and modify this library
23
+ * for personal or commercial projects.
24
+ *
25
+ * Reuploading, reselling, relicensing, or redistributing
26
+ * this library as a standalone product is prohibited.
27
+ *
28
+ * Do not claim this project as your own original work.
29
+ */
30
+ 'use strict';
31
+ // ─── Step 1: Foundations ─────────────────────────────────────────────────────
32
+ // extractIE, waitAllPromises, error classes
33
+ // Ported from MessageBuilderV4.7.js by Nixel
34
+ /**
35
+ * Parser untuk inline entities di teks AiRich:
36
+ * - [teks](url) → hyperlink
37
+ * - [](url) → citation
38
+ * - [teks|w|h]<url> → latex image
39
+ *
40
+ * Prefix `!` di url = untrusted hyperlink, misal: [klik](!https://...)
41
+ */
42
+ function extractIE(text, { extract = true, hyperlink = true, citation = true, latex = true } = {}) {
43
+ if (!extract) {
44
+ return { text, ie: [], inline_entities: [] };
45
+ }
46
+ const createIE = (type, ie) => {
47
+ if (type === 'hyperlink') {
48
+ return {
49
+ key: ie.key,
50
+ metadata: {
51
+ display_name: ie.text,
52
+ is_trusted: ie.is_trusted,
53
+ url: ie.url,
54
+ __typename: 'GenAIInlineLinkItem',
55
+ },
56
+ };
57
+ }
58
+ if (type === 'citation') {
59
+ return {
60
+ key: ie.key,
61
+ metadata: {
62
+ reference_id: ie.reference_id,
63
+ reference_url: ie.url,
64
+ reference_title: ie.url,
65
+ reference_display_name: ie.url,
66
+ sources: [],
67
+ __typename: 'GenAISearchCitationItem',
68
+ },
69
+ };
70
+ }
71
+ if (type === 'latex') {
72
+ return {
73
+ key: ie.key,
74
+ metadata: {
75
+ latex_expression: ie.text,
76
+ latex_image: {
77
+ url: ie.url,
78
+ width: Number(ie.width) || 100,
79
+ height: Number(ie.height) || 100,
80
+ },
81
+ font_height: Number(ie.font_height) || 83.333333333333,
82
+ padding: Number(ie.padding) || 15,
83
+ __typename: 'GenAILatexItem',
84
+ },
85
+ };
86
+ }
87
+ };
88
+ let ie = [];
89
+ let inline_entities = [];
90
+ let result = '';
91
+ let last = 0;
92
+ let citation_index = 1;
93
+ let hyperlink_index = 0;
94
+ let latex_index = 0;
95
+ let stack = [];
96
+ for (let i = 0; i < text.length; i++) {
97
+ if (text[i] === '[' && text[i - 1] !== '\\') {
98
+ stack.push(i);
99
+ }
100
+ else if (text[i] === ']' && (text[i + 1] === '(' || text[i + 1] === '<')) {
101
+ let start = stack.pop();
102
+ if (start == null)
103
+ continue;
104
+ const open = text[i + 1];
105
+ const close = open === '(' ? ')' : '>';
106
+ const type = open === '(' ? 'link' : 'latex';
107
+ let end = i + 2;
108
+ let depth = 1;
109
+ while (end < text.length && depth) {
110
+ if (text[end] === open && text[end - 1] !== '\\')
111
+ depth++;
112
+ else if (text[end] === close && text[end - 1] !== '\\')
113
+ depth--;
114
+ end++;
115
+ }
116
+ if (depth)
117
+ continue;
118
+ const raw = text.slice(start + 1, i).trim();
119
+ let url = text.slice(i + 2, end - 1).trim();
120
+ let key;
121
+ let tag;
122
+ let data;
123
+ if (type === 'latex') {
124
+ if (!latex)
125
+ continue;
126
+ const [txt = '', width = null, height = null, font_height = null, padding = null] = raw.split('|');
127
+ key = `\u004E\u0049\u0058\u0045\u004C_LATEX_${latex_index++}`;
128
+ tag = `{{${key}}}${txt || 'image'}{{/${key}}}`;
129
+ data = { type: 'latex', ie: { key, text: txt, url, width, height, font_height, padding } };
130
+ }
131
+ else if (raw) {
132
+ if (!hyperlink)
133
+ continue;
134
+ const trusted = !url.startsWith('!');
135
+ if (!trusted)
136
+ url = url.slice(1);
137
+ key = `\u004E\u0049\u0058\u0045\u004C_HYPERLINK_${hyperlink_index++}`;
138
+ tag = `{{${key}}}${url}{{/${key}}}`;
139
+ data = { type: 'hyperlink', ie: { key, text: raw, url, is_trusted: trusted } };
140
+ }
141
+ else {
142
+ if (!citation)
143
+ continue;
144
+ key = `\u004E\u0049\u0058\u0045\u004C_CITATION_${citation_index - 1}`;
145
+ tag = `{{${key}}}${url}{{/${key}}}`;
146
+ data = { type: 'citation', ie: { reference_id: citation_index++, key, text: '', url } };
147
+ }
148
+ result += text.slice(last, start) + tag;
149
+ last = end;
150
+ ie.push(data);
151
+ const entity = createIE(data.type, data.ie);
152
+ if (entity)
153
+ inline_entities.push(entity);
154
+ i = end - 1;
155
+ }
156
+ }
157
+ result += text.slice(last);
158
+ return { text: result, ie, inline_entities };
159
+ }
160
+ /**
161
+ * Resolve semua Promise secara rekursif di dalam object/array bersarang.
162
+ * Berguna untuk await semua nilai async sekaligus sebelum dilempar ke payload.
163
+ */
164
+ async function waitAllPromises(input) {
165
+ const isPromise = (v) => v && typeof v.then === 'function';
166
+ const isObject = (v) => v && typeof v === 'object';
167
+ const deep = async (v) => {
168
+ if (isPromise(v))
169
+ return deep(await v);
170
+ if (Array.isArray(v))
171
+ return Promise.all(v.map(deep));
172
+ if (isObject(v)) {
173
+ const entries = await Promise.all(Object.entries(v).map(async ([k, val]) => [k, await deep(val)]));
174
+ return Object.fromEntries(entries);
175
+ }
176
+ return v;
177
+ };
178
+ return deep(await input);
179
+ }
180
+ // ─── Error Classes ────────────────────────────────────────────────────────────
181
+ class AIRichError extends Error {
182
+ constructor(message, code, meta = {}) {
183
+ super(message);
184
+ this.name = 'AIRichError';
185
+ this.code = code;
186
+ Object.assign(this, meta);
187
+ }
188
+ }
189
+ class ItemNotFoundError extends AIRichError {
190
+ constructor(id, availableIds = []) {
191
+ super(`Item id "${id}" not found${availableIds.length ? ` (available: ${availableIds.join(', ')})` : ' (no items have an id yet)'}`, 'ITEM_NOT_FOUND', { id, availableIds });
192
+ this.name = 'ItemNotFoundError';
193
+ }
194
+ }
195
+ class DuplicateIdError extends AIRichError {
196
+ constructor(id) {
197
+ super(`Item id "${id}" already exists`, 'DUPLICATE_ID', { id });
198
+ this.name = 'DuplicateIdError';
199
+ }
200
+ }
201
+ class InvalidTargetError extends AIRichError {
202
+ constructor(message, meta = {}) {
203
+ super(message, 'INVALID_TARGET', meta);
204
+ this.name = 'InvalidTargetError';
205
+ }
206
+ }
207
+ class ContentValidationError extends AIRichError {
208
+ constructor(message, meta = {}) {
209
+ super(message, 'CONTENT_VALIDATION', meta);
210
+ this.name = 'ContentValidationError';
211
+ }
212
+ }
213
+ export { extractIE, waitAllPromises, AIRichError, ItemNotFoundError, DuplicateIdError, InvalidTargetError, ContentValidationError, };
214
+ //# sourceMappingURL=mbuilder-utils.js.map