sauruspro-bail 5.0.0 → 5.0.1

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 (39) hide show
  1. package/README.md +8 -9
  2. package/docs/CHANGELOG.md +25 -4
  3. package/docs/SPR.md +2 -2
  4. package/lib/Defaults/index.js +5 -1
  5. package/lib/Socket/dinonic-handler.d.ts +27 -0
  6. package/lib/Socket/dinonic-handler.js +882 -0
  7. package/lib/Socket/index.js +5 -1
  8. package/lib/Socket/messages-recv.js +26 -0
  9. package/lib/Socket/messages-send.js +25 -0
  10. package/lib/Utils/MessageBuilder.d.ts +215 -0
  11. package/lib/Utils/MessageBuilder.js +3991 -0
  12. package/lib/Utils/a2ui.d.ts +202 -0
  13. package/lib/Utils/a2ui.js +732 -0
  14. package/lib/Utils/airich-registry.js +3 -0
  15. package/lib/Utils/baileys-event-stream.js +58 -0
  16. package/lib/Utils/bot-signature.d.ts +22 -0
  17. package/lib/Utils/bot-signature.js +124 -0
  18. package/lib/Utils/{dinolith-spr.js → dinonic-spr.js} +1 -1
  19. package/lib/Utils/extras.d.ts +449 -0
  20. package/lib/Utils/extras.js +1377 -0
  21. package/lib/Utils/html-app.d.ts +39 -0
  22. package/lib/Utils/html-app.js +291 -0
  23. package/lib/Utils/index.js +14 -2
  24. package/lib/Utils/metaai.d.ts +438 -0
  25. package/lib/Utils/metaai.js +911 -0
  26. package/lib/Utils/modern-messages.d.ts +150 -0
  27. package/lib/Utils/modern-messages.js +496 -0
  28. package/lib/Utils/native-flow.d.ts +14 -0
  29. package/lib/Utils/native-flow.js +118 -0
  30. package/lib/Utils/newsletter-status.js +9 -53
  31. package/lib/Utils/payment-messages.d.ts +59 -0
  32. package/lib/Utils/payment-messages.js +156 -0
  33. package/lib/Utils/scheduled-message.d.ts +82 -0
  34. package/lib/Utils/scheduled-message.js +113 -0
  35. package/lib/Utils/status-stickers.d.ts +78 -0
  36. package/lib/Utils/status-stickers.js +261 -0
  37. package/lib/index.js +2 -2
  38. package/package.json +4 -4
  39. /package/lib/Utils/{dinolith-spr.d.ts → dinonic-spr.d.ts} +0 -0
@@ -0,0 +1,39 @@
1
+ export declare const HTML_APP_MESSAGE_CEILING: number;
2
+ export declare const HTML_APP_BYTE_BUDGET: number;
3
+ export declare const HTML_APP_BYTE_LIMIT: number;
4
+ export declare const HTML_MIME_TYPE: string;
5
+
6
+ export declare function wireBytes(html: string): number;
7
+
8
+ export interface HtmlAppReport {
9
+ ok: boolean;
10
+ bytes: number;
11
+ wireBytes: number;
12
+ embeddedBytes: number;
13
+ problems: string[];
14
+ warnings: string[];
15
+ }
16
+
17
+ export declare function checkHtmlApp(html: string, options?: {
18
+ height?: number;
19
+ maxBytes?: number;
20
+ }): HtmlAppReport;
21
+
22
+ export declare function lockHeight(height: number): string;
23
+ export declare function autoHeight(): string;
24
+ export declare function scrollControls(options?: {
25
+ upLabel?: string;
26
+ downLabel?: string;
27
+ step?: number;
28
+ }): string;
29
+
30
+ export declare function htmlSection(html: string, options?: {
31
+ trustedSources?: string[];
32
+ height?: number;
33
+ typename?: string;
34
+ }): any;
35
+
36
+ export declare function sendHtmlApp(sock: any, jid: string, html: string, options?: any): Promise<any>;
37
+ export declare function sendHtmlDocument(sock: any, jid: string, html: string, options?: any): Promise<any>;
38
+ export declare function fileSection(url: string, options?: any): any;
39
+ export declare function fileLinkSection(url: string, options?: any): any;
@@ -0,0 +1,291 @@
1
+ import { airichRegistry as _MBModule } from './airich-registry.js';
2
+ import * as crypto from 'crypto';
3
+ let _AIRich;
4
+ function getAIRich() {
5
+ if (!_AIRich) {
6
+ _AIRich = _MBModule.AIRich;
7
+ }
8
+ return _AIRich;
9
+ }
10
+
11
+ const HTML_APP_MESSAGE_CEILING = 1024 * 1024;
12
+
13
+ const HTML_APP_BYTE_BUDGET = 960 * 1024;
14
+
15
+ const HTML_APP_BYTE_LIMIT = HTML_APP_BYTE_BUDGET;
16
+
17
+ const HTML_MIME_TYPE = 'text/html';
18
+
19
+ const wireBytes = (html) => Buffer.byteLength(
20
+ JSON.stringify(String(html)).replace(/[\u007f-\uffff]/g, (c) => '\\u' + c.charCodeAt(0).toString(16).padStart(4, '0')),
21
+ 'utf-8'
22
+ );
23
+
24
+ const STORAGE_APIS = ['localStorage', 'sessionStorage', 'indexedDB', 'document.cookie', 'caches'];
25
+
26
+ const strip = (html) => html
27
+ .replace(/<!--[\s\S]*?-->/g, '')
28
+ .replace(/data:[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]*;base64,[A-Za-z0-9+/=]+/gi, 'data:');
29
+
30
+ const hasVisibilityGuard = (source) => /document\.(hidden|visibilityState)|visibilitychange|IntersectionObserver|cancelAnimationFrame|clearInterval/.test(source);
31
+
32
+ const checkHtmlApp = (html, { height, maxBytes = HTML_APP_BYTE_BUDGET } = {}) => {
33
+ if (typeof html !== 'string') {
34
+ throw new TypeError('checkHtmlApp requires an HTML string');
35
+ }
36
+
37
+ const bytes = Buffer.byteLength(html, 'utf-8');
38
+ const wire = wireBytes(html);
39
+ const source = strip(html);
40
+ const problems = [];
41
+ const warnings = [];
42
+
43
+ if (wire > maxBytes) {
44
+ problems.push(`${Math.round(wire / 1024)}KB on the wire, over the ${Math.round(maxBytes / 1024)}KB budget`);
45
+ }
46
+
47
+ if (wire > bytes * 1.15) {
48
+ warnings.push(`escaping inflates this page from ${Math.round(bytes / 1024)}KB to ${Math.round(wire / 1024)}KB`);
49
+ }
50
+
51
+ const remote = [...source.matchAll(/\b(?:src|href)\s*=\s*["']?(https?:)?\/\//gi)];
52
+ if (remote.length) {
53
+ problems.push(`${remote.length} remote subresource(s) — embed as data: URIs instead`);
54
+ }
55
+
56
+ if (/\bfetch\s*\(|XMLHttpRequest|navigator\.sendBeacon|new\s+EventSource/.test(source)) {
57
+ problems.push('a call over HTTP stack — use offline/embedded storage');
58
+ }
59
+
60
+ const storage = STORAGE_APIS.filter(api => source.includes(api));
61
+ if (storage.length) {
62
+ problems.push(`${storage.join(', ')} — every storage API throws SecurityError in an opaque origin`);
63
+ }
64
+
65
+ return { ok: problems.length === 0, bytes, wireBytes: wire, problems, warnings };
66
+ };
67
+
68
+ const lockHeight = (height) => {
69
+ const px = Number(height);
70
+ if (!Number.isFinite(px) || px <= 0) {
71
+ throw new TypeError('lockHeight requires a positive number of pixels');
72
+ }
73
+ return '<style>html,body{height:' + Math.round(px) + 'px;max-height:' + Math.round(px) + 'px;overflow:hidden}</style>';
74
+ };
75
+
76
+ const autoHeight = ({ min = 60, max = 900, settleMs = 120, maxReports = 24 } = {}) => {
77
+ const low = Number(min);
78
+ const high = Number(max);
79
+ const wait = Number(settleMs);
80
+ const cap = Number(maxReports);
81
+ if (!Number.isFinite(low) || low <= 0) {
82
+ throw new TypeError('autoHeight min must be a positive number of pixels');
83
+ }
84
+ if (!Number.isFinite(high) || high <= low) {
85
+ throw new TypeError('autoHeight max must be greater than min');
86
+ }
87
+ return '<style>html,body{margin:0;padding:0}</style>'
88
+ + '<script>(function(){'
89
+ + 'var LOW=' + low + ',HIGH=' + high + ',WAIT=' + wait + ',CAP=' + cap + ';'
90
+ + 'var sent=[],timer=null,stopped=false;'
91
+ + 'function measure(){var d=document.documentElement,b=document.body;'
92
+ + 'var h=Math.max(d?d.scrollHeight:0,b?b.scrollHeight:0,b?b.offsetHeight:0);'
93
+ + 'return Math.min(HIGH,Math.max(LOW,Math.ceil(h)))}'
94
+ + 'function report(){if(stopped)return;var h=measure();'
95
+ + 'if(sent.length&&sent[sent.length-1]===h)return;'
96
+ + 'sent.push(h);if(sent.length>=CAP)stopped=true;'
97
+ + 'if(window.AndroidBridge&&typeof window.AndroidBridge.updateSize==="function"){'
98
+ + 'try{window.AndroidBridge.updateSize(h)}catch(e){}}}'
99
+ + 'function ping(){if(timer!==null)clearTimeout(timer);timer=setTimeout(report,WAIT)}'
100
+ + 'if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",ping);else ping();'
101
+ + 'window.addEventListener("load",ping);'
102
+ + 'if(typeof ResizeObserver==="function"){try{new ResizeObserver(ping).observe(document.body)}catch(e){}}'
103
+ + '})();<' + '/script>';
104
+ };
105
+
106
+ const scrollControls = ({ step = 120, holdMs = 60, target = 'body', side = 'right', inset = 8, size = 36 } = {}) => {
107
+ const px = Number(step);
108
+ const hold = Number(holdMs);
109
+ const box = Number(size);
110
+ const edge = Number(inset);
111
+ return '<style>'
112
+ + '#__sc{position:fixed;' + side + ':' + edge + 'px;bottom:' + edge + 'px;z-index:2147483647;'
113
+ + 'display:none;flex-direction:column;gap:' + Math.round(box / 6) + 'px}'
114
+ + '#__sc button{width:' + box + 'px;height:' + box + 'px;padding:0;border:0;'
115
+ + 'border-radius:' + Math.round(box / 4) + 'px;background:rgba(0,0,0,.6);color:#fff;'
116
+ + 'font:' + Math.round(box / 2) + 'px/1 system-ui;touch-action:none;cursor:pointer;'
117
+ + '-webkit-tap-highlight-color:transparent}'
118
+ + '#__sc button:disabled{opacity:.3}'
119
+ + '</style>'
120
+ + '<script>(function(){'
121
+ + 'var STEP=' + px + ',HOLD=' + hold + ',SEL=' + JSON.stringify(target) + ';'
122
+ + 'var box,up,down,timer=null;'
123
+ + 'function pane(){return document.querySelector(SEL)||document.scrollingElement||document.body}'
124
+ + 'function room(){var p=pane();return p?p.scrollHeight-p.clientHeight:0}'
125
+ + 'function sync(){if(!box)return;var p=pane(),r=room();'
126
+ + 'box.style.display=r>4?"flex":"none";if(r<=4)return;'
127
+ + 'up.disabled=p.scrollTop<=0;down.disabled=p.scrollTop>=r-1}'
128
+ + 'function move(by){var p=pane();if(!p)return;p.scrollTop+=by;sync()}'
129
+ + 'function stop(){if(timer!==null){clearInterval(timer);timer=null}}'
130
+ + 'function press(e,by){e.preventDefault();e.stopPropagation();stop();move(by);'
131
+ + 'timer=setInterval(function(){move(by)},HOLD)}'
132
+ + 'function make(label,by){var b=document.createElement("button");b.type="button";'
133
+ + 'b.textContent=label;b.setAttribute("aria-label",by<0?"scroll up":"scroll down");'
134
+ + 'b.addEventListener("touchstart",function(e){press(e,by)},{passive:false});'
135
+ + 'b.addEventListener("touchend",function(e){e.preventDefault();stop()},{passive:false});'
136
+ + 'b.addEventListener("touchcancel",stop);'
137
+ + 'b.addEventListener("mousedown",function(e){press(e,by)});'
138
+ + 'b.addEventListener("mouseup",stop);b.addEventListener("mouseleave",stop);'
139
+ + 'b.addEventListener("click",function(e){e.preventDefault();e.stopPropagation()});'
140
+ + 'return b}'
141
+ + 'function start(){if(box)return;'
142
+ + 'box=document.createElement("div");box.id="__sc";'
143
+ + 'up=make("\\u25b2",-STEP);down=make("\\u25bc",STEP);'
144
+ + 'box.appendChild(up);box.appendChild(down);document.body.appendChild(box);'
145
+ + 'var p=pane();if(p&&p.addEventListener)p.addEventListener("scroll",sync,{passive:true});'
146
+ + 'if(typeof ResizeObserver==="function"){try{new ResizeObserver(sync).observe(document.body)}catch(e){}}'
147
+ + 'addEventListener("load",sync);sync()}'
148
+ + 'if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",start);else start();'
149
+ + 'window.__scrollControls={by:move,sync:sync};'
150
+ + '})();<' + '/script>';
151
+ };
152
+
153
+ const AI_RICH_HTML_PRIMITIVE = 'GenAIaeacdsnwHtmlPrimitive';
154
+
155
+ const htmlSection = (html, { trustedSources = [], height, typename = AI_RICH_HTML_PRIMITIVE } = {}) => {
156
+ if (typeof html !== 'string' || html.trim() === '') {
157
+ throw new TypeError('htmlSection requires a non-empty HTML string');
158
+ }
159
+ return getAIRich().newLayout('Single', {
160
+ payload: height === undefined ? html : lockHeight(height) + html,
161
+ trusted_sources: Array.isArray(trustedSources) ? trustedSources.map(String) : [],
162
+ __typename: typename
163
+ });
164
+ };
165
+
166
+ /**
167
+ * sendHtmlApp: sends an HTML app with automatic anti-unduh (bypass download)
168
+ * and full dual support for WhatsApp Business and regular WhatsApp.
169
+ */
170
+ const sendHtmlApp = async (sock, jid, html, {
171
+ title = '',
172
+ label,
173
+ trustedSources = [],
174
+ height,
175
+ autoHeight: auto,
176
+ scrollButtons,
177
+ typename,
178
+ id,
179
+ bypassDownload = true,
180
+ guard = 'warn',
181
+ botJid = '867051314767696@bot',
182
+ contextInfo = {},
183
+ ...options
184
+ } = {}) => {
185
+ if (!sock) {
186
+ throw new TypeError('sendHtmlApp requires a socket as the first argument');
187
+ }
188
+ if (!jid) {
189
+ throw new TypeError('sendHtmlApp requires a target jid');
190
+ }
191
+ if (auto && height !== undefined) {
192
+ throw new TypeError('sendHtmlApp takes either height or autoHeight, not both');
193
+ }
194
+
195
+ if (auto) {
196
+ html = autoHeight(auto === true ? undefined : auto) + html;
197
+ }
198
+
199
+ if (scrollButtons) {
200
+ html += scrollControls(scrollButtons === true ? undefined : scrollButtons);
201
+ }
202
+
203
+ if (guard !== false) {
204
+ const report = checkHtmlApp(html, { height });
205
+ if (!report.ok && guard === true) {
206
+ throw new TypeError('this html app will not behave in the WebView:\n ' + report.problems.join('\n '));
207
+ }
208
+ if (guard === 'warn') {
209
+ for (const problem of report.problems) {
210
+ sock.logger?.warn({ jid }, 'html app: ' + problem);
211
+ }
212
+ for (const warning of report.warnings) {
213
+ sock.logger?.warn({ jid }, 'html app: ' + warning);
214
+ }
215
+ }
216
+ }
217
+
218
+ const rich = new (getAIRich())(sock);
219
+
220
+ if (title) {
221
+ rich.setTitle(title);
222
+ }
223
+
224
+ rich._addContent(
225
+ htmlSection(html, { trustedSources, height, ...(typename ? { typename } : {}) }),
226
+ label ? { messageType: 2, messageText: String(label) } : undefined,
227
+ id ? { id } : {}
228
+ );
229
+
230
+ const mergedContextInfo = {
231
+ forwardingScore: 1,
232
+ isForwarded: true,
233
+ forwardedAiBotMessageInfo: { botJid },
234
+ forwardOrigin: 4,
235
+ ...(typeof global !== 'undefined' && global.owner ? {
236
+ businessMessageForwardInfo: { businessOwnerJid: global.owner + '@s.whatsapp.net' }
237
+ } : {}),
238
+ ...contextInfo
239
+ };
240
+
241
+ return rich.send(jid, {
242
+ bypassDownload,
243
+ botJid,
244
+ contextInfo: mergedContextInfo,
245
+ ...options
246
+ });
247
+ };
248
+
249
+ const sendHtmlDocument = async (sock, jid, html, { fileName = 'app.html', caption, ...options } = {}) => {
250
+ if (!sock) {
251
+ throw new TypeError('sendHtmlDocument requires a socket as the first argument');
252
+ }
253
+ if (!jid) {
254
+ throw new TypeError('sendHtmlDocument requires a target jid');
255
+ }
256
+ if (typeof html !== 'string' || html.trim() === '') {
257
+ throw new TypeError('sendHtmlDocument requires a non-empty HTML string');
258
+ }
259
+ const name = String(fileName);
260
+ if (!/\.html?$/i.test(name)) {
261
+ throw new TypeError('sendHtmlDocument fileName must end with .html or .htm');
262
+ }
263
+ return sock.sendMessage(jid, {
264
+ document: Buffer.from(html, 'utf-8'),
265
+ mimetype: HTML_MIME_TYPE,
266
+ fileName: name,
267
+ ...(caption ? { caption: String(caption) } : {}),
268
+ ...options
269
+ });
270
+ };
271
+
272
+ const fileArtifact = (typename) => (url, { title = '', fileExtension = 'html', fileLength = 0, pageCount, previewImage } = {}) => {
273
+ if (typeof url !== 'string' || url.trim() === '') {
274
+ throw new TypeError('a file section requires a non-empty url');
275
+ }
276
+ return getAIRich().newLayout('Single', {
277
+ title: String(title),
278
+ url,
279
+ file_extension: String(fileExtension).replace(/^\./, ''),
280
+ file_length: Number(fileLength) || 0,
281
+ page_count: pageCount === undefined ? undefined : Number(pageCount) || 0,
282
+ preview_image: previewImage,
283
+ __typename: typename
284
+ });
285
+ };
286
+
287
+ const fileSection = fileArtifact('GenAIFilePrimitive');
288
+
289
+ const fileLinkSection = fileArtifact('GenAIFileLinkPrimitive');
290
+
291
+ export { HTML_APP_MESSAGE_CEILING, HTML_APP_BYTE_BUDGET, HTML_APP_BYTE_LIMIT, HTML_MIME_TYPE, wireBytes, checkHtmlApp, lockHeight, autoHeight, scrollControls, htmlSection, sendHtmlApp, sendHtmlDocument, fileSection, fileLinkSection };
@@ -22,5 +22,17 @@ export * from './identity-change-handler.js';
22
22
  export * from './stanza-ack.js';
23
23
  export * from './message-composer.js';
24
24
  export * from './newsletter-status.js';
25
- export { sPR, selectiveRelay } from './dinolith-spr.js';
26
- //# sourceMappingURL=index.js.map
25
+ export { sPR, selectiveRelay } from './dinonic-spr.js';
26
+ //# sourceMappingURL=index.js.map
27
+ export * from './a2ui.js';
28
+ export * from './html-app.js';
29
+ export { AIRichMessage, AI_RICH_HTML_PRIMITIVE, AI_RICH_HTML_PRIMITIVE_CLASS, AI_RICH_INLINE_ENTITIES, AI_RICH_ITEMS, AI_RICH_LAYOUTS, AI_RICH_NESTED_UNIFIED_RESPONSE_TYPENAME, AI_RICH_NODES, AI_RICH_PRIMITIVES, AI_RICH_PRIMITIVES_WEB_RENDERED, AI_RICH_PRIMITIVES_WITHOUT_SCHEMA, AI_RICH_PRIMITIVE_INTERFACE, AI_RICH_RESPONSE_KEYS, AI_RICH_SECTION_TYPENAME, AI_RICH_SUBMESSAGE_CONTENT_ITEMS, AI_RICH_SUBMESSAGE_INLINE_IMAGE, AI_RICH_SUBMESSAGE_KINDS, AI_RICH_SUBMESSAGE_TABLE, AI_RICH_SUBMESSAGE_TEXT, AI_RICH_UNIFIED_RESPONSE_TYPENAME, AI_RICH_UNIFIED_RESPONSE_TYPENAME_APP, AddonActionType, DividerType, EMBEDDED_SCREEN_CONTEXTUAL_TYPENAME, EMBEDDED_SCREEN_PRESENTATION, EMBEDDED_SCREEN_SINGLE_TYPENAME, EMBEDDED_SCREEN_TABBED_TYPENAME, EMBEDDED_SCREEN_TAB_TYPENAME, EMBEDDED_SCREEN_TYPENAME, FooterActionType, HTML_APP_BRIDGE, ImagineStatus, ImagineType, SourceProvider, TaskStatus, ThinkingIcon, a2uiFallback, a2uiInfoCard, a2uiListCard, aiRichContentItems, aiRichInlineImage, aiRichSubmessage, aiRichTable, aiRichText, botMediaMetadata, botSourcesMetadata, buildA2UISection, collectTypenames, dataUri, decodeAIRich, decodeBloksWidget, dividerSection, embeddedScreen, embeddedTab, embeddedTabbedContent, footerActionSection, htmlMedia, imageSection, latexSection, prepareFileArtifact, progressSection, readEmbeddedSections, readEmbeddedTabs, readRichMessage, sendA2UIBloks, sendAIRichMessage, sendHtmlArtifact, spacerSection, taskSection, thinkingSection } from './extras.js';
30
+ export { AccountLinkingIntegration, AccountLinkingStatus, ActionListRowType, AddonActionAlignment, CalendarEventOperation, CalendarEventState, ClippyArtifactType, CodeBlockType, CompactEntityActionType, CompactEntityType, FollowUpSuggestionCategory, ImageAssetQueryStatus, InformTreatmentRenderingType, MapItemMarkerType, MapQueryStatus, MediaHorizontalAlignment, MediaShape, MediaVerticalAlignment, MultipleResponseLayoutType, OrchestratorSearchEngine, PlaceDetailsItemType, PlaceOpeningStatus, PlacePriceLevel, PostOrientation, PostType, ProductSourceType, ProfessionalConsentStatus, QuotaUpsellMeterUsageType, SearchPlannerStepStatus, SocialEntityItemType, SourceApp, SportsGameStatus, SportsLeague, SportsSeasonType, ThreadSurfingActionType, ThreadSurfingEntityType, UnifiedResponseMessageGroupKind, UnifiedResponseSectionType, WidgetCtaKind, WidgetCtaState, accountLinkingApp, accountLinkingSection, actionGroupButton, actionGroupSection, actionListRow, actionListSection, addonActionSection, bloomCardSection, calendarEvent, calendarWidgetSection, chainOfThoughtSection, chainingSuggestionSection, commentSection, compactEntitySection, contextualSourcesSection, customSection, forwardRichResponse, fusedComparisonColumn, fusedComparisonCta, fusedComparisonRow, fusedComparisonSection, locationPermissionSection, mapSection, mediaGridSection, mediaItem, multipleResponseSection, placeEntityItem, placeItem, plannerSnippetSection, plannerStep, productEntityItem, professionalConsentSection, quizQuestion, quizSection, quotaUpsellButton, quotaUpsellSection, readSignedRichResponse, reminderSection, searchAdSection, searchPlannerSection, searchResultV2Section, sideBySideSurveyItem, socialEntityItem, sportsSection, threadSurfingItem, timestampPlaceholderSection, transparencySection, transparencySignal, verifyRichResponseSignature, videoSection } from './metaai.js';
31
+ export * from './modern-messages.js';
32
+ export * from './native-flow.js';
33
+ export * from './payment-messages.js';
34
+ export * from './scheduled-message.js';
35
+ export * from './status-stickers.js';
36
+ export * from './bot-signature.js';
37
+ export * from './baileys-event-stream.js';
38
+ export * as DinonicBuilder from './MessageBuilder.js';