@ubedsockets/baileys 1.6.9 → 1.7.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.
- package/WAProto/GenerateStatics.sh +26 -3
- package/WAProto/WAProto.proto +432 -180
- package/WAProto/add-missing-proto-deps.js +134 -0
- package/WAProto/imports-elaina.js +48 -0
- package/WAProto/index.js +78044 -140686
- package/WAProto/merge-elaina-ai-proto.js +187 -0
- package/engine-requirements.js +10 -0
- package/lib/Defaults/elaina-version.json +3 -0
- package/lib/Defaults/index.js +57 -55
- package/lib/Signal/Group/group_cipher.js +1 -1
- package/lib/Signal/Group/keyhelper.js +1 -1
- package/lib/Signal/Group/sender-chain-key.js +1 -1
- package/lib/Signal/Group/sender-key-message.js +1 -1
- package/lib/Signal/Group/sender-message-key.js +1 -1
- package/lib/Signal/libsignal.js +1 -1
- package/lib/Signal/libsignalnode/LICENSE +621 -0
- package/lib/Signal/libsignalnode/README.md +11 -0
- package/lib/Signal/libsignalnode/generate-proto.sh +1 -0
- package/lib/Signal/libsignalnode/index.js +10 -0
- package/lib/Signal/libsignalnode/protos/WhisperTextProtocol.proto +28 -0
- package/lib/Signal/libsignalnode/src/.eslintrc.json +31 -0
- package/lib/Signal/libsignalnode/src/WhisperTextProtocol.js +948 -0
- package/lib/Signal/libsignalnode/src/base_key_type.js +6 -0
- package/lib/Signal/libsignalnode/src/chain_type.js +6 -0
- package/lib/Signal/libsignalnode/src/crypto.js +98 -0
- package/lib/Signal/libsignalnode/src/curve.js +142 -0
- package/lib/Signal/libsignalnode/src/errors.js +33 -0
- package/lib/Signal/libsignalnode/src/keyhelper.js +45 -0
- package/lib/Signal/libsignalnode/src/numeric_fingerprint.js +70 -0
- package/lib/Signal/libsignalnode/src/protobufs.js +10 -0
- package/lib/Signal/libsignalnode/src/protocol_address.js +40 -0
- package/lib/Signal/libsignalnode/src/queue_job.js +70 -0
- package/lib/Signal/libsignalnode/src/session_builder.js +164 -0
- package/lib/Signal/libsignalnode/src/session_cipher.js +332 -0
- package/lib/Signal/libsignalnode/src/session_record.js +325 -0
- package/lib/Socket/Client/websocket.js +2 -41
- package/lib/Socket/Rhandler.js +533 -0
- package/lib/Socket/chats.js +249 -123
- package/lib/Socket/index.js +1 -1
- package/lib/Socket/messages-recv.js +57 -5
- package/lib/Socket/messages-send.js +47 -280
- package/lib/Socket/newsletter.js +100 -132
- package/lib/Socket/socket.js +79 -87
- package/lib/Socket/usync.js +0 -2
- package/lib/Store/make-in-memory-store.js +1 -1
- package/lib/Utils/browser-utils.js +30 -23
- package/lib/Utils/crypto.js +22 -18
- package/lib/Utils/decode-wa-message.js +12 -2
- package/lib/Utils/{baileys-event-stream.js → elaina-event-stream.js} +1 -1
- package/lib/Utils/event-buffer.js +2 -2
- package/lib/Utils/generics.js +36 -10
- package/lib/Utils/index.js +3 -1
- package/lib/Utils/message-retry-manager.js +48 -185
- package/lib/Utils/messages-media.js +127 -236
- package/lib/Utils/messages.js +746 -232
- package/lib/Utils/noise-handler.js +1 -2
- package/lib/Utils/process-message.js +108 -25
- package/lib/Utils/signal.js +1 -10
- package/lib/Utils/use-multi-file-auth-state.js +1 -1
- package/lib/Utils/validate-connection.js +3 -7
- package/lib/Voip/audio-feeder.js +166 -0
- package/lib/Voip/index.js +639 -0
- package/lib/Voip/relay-transport.js +829 -0
- package/lib/Voip/signaling.js +1102 -0
- package/lib/Voip/types.js +23 -0
- package/lib/Voip/wasm-engine.js +1255 -0
- package/lib/Voip/worker-bootstrap.js +1078 -0
- package/lib/WABinary/jid-utils.js +17 -1
- package/lib/assets/wasm/loader.js +5 -0
- package/lib/assets/wasm/whatsapp.wasm +0 -0
- package/lib/assets/wasm/worker-modules.js +273 -0
- package/lib/index.js +21 -18
- package/package.json +32 -18
- package/WAProto/AICommon.js +0 -27981
- package/WAProto/AICommon.proto +0 -713
- package/WAProto/Ephemeral.js +0 -295
- package/WAProto/Ephemeral.proto +0 -7
- package/WAProto/fix-imports.js +0 -85
- package/WAProto/index.d.ts +0 -14017
- package/WAProto/vyzen.js +0 -7
- package/lib/Defaults/baileys-version.json +0 -3
- package/lib/Defaults/index.d.ts +0 -75
- package/lib/Defaults/index.d.ts.map +0 -1
- package/lib/Defaults/index.js.map +0 -1
- package/lib/Signal/Group/ciphertext-message.d.ts +0 -10
- package/lib/Signal/Group/ciphertext-message.d.ts.map +0 -1
- package/lib/Signal/Group/ciphertext-message.js.map +0 -1
- package/lib/Signal/Group/group-session-builder.d.ts +0 -15
- package/lib/Signal/Group/group-session-builder.d.ts.map +0 -1
- package/lib/Signal/Group/group-session-builder.js.map +0 -1
- package/lib/Signal/Group/group_cipher.d.ts +0 -17
- package/lib/Signal/Group/group_cipher.d.ts.map +0 -1
- package/lib/Signal/Group/group_cipher.js.map +0 -1
- package/lib/Signal/Group/index.d.ts +0 -12
- package/lib/Signal/Group/index.d.ts.map +0 -1
- package/lib/Signal/Group/index.js.map +0 -1
- package/lib/Signal/Group/keyhelper.d.ts +0 -11
- package/lib/Signal/Group/keyhelper.d.ts.map +0 -1
- package/lib/Signal/Group/keyhelper.js.map +0 -1
- package/lib/Signal/Group/sender-chain-key.d.ts +0 -14
- package/lib/Signal/Group/sender-chain-key.d.ts.map +0 -1
- package/lib/Signal/Group/sender-chain-key.js.map +0 -1
- package/lib/Signal/Group/sender-key-distribution-message.d.ts +0 -17
- package/lib/Signal/Group/sender-key-distribution-message.d.ts.map +0 -1
- package/lib/Signal/Group/sender-key-distribution-message.js.map +0 -1
- package/lib/Signal/Group/sender-key-message.d.ts +0 -19
- package/lib/Signal/Group/sender-key-message.d.ts.map +0 -1
- package/lib/Signal/Group/sender-key-message.js.map +0 -1
- package/lib/Signal/Group/sender-key-name.d.ts +0 -18
- package/lib/Signal/Group/sender-key-name.d.ts.map +0 -1
- package/lib/Signal/Group/sender-key-name.js.map +0 -1
- package/lib/Signal/Group/sender-key-record.d.ts +0 -31
- package/lib/Signal/Group/sender-key-record.d.ts.map +0 -1
- package/lib/Signal/Group/sender-key-record.js.map +0 -1
- package/lib/Signal/Group/sender-key-state.d.ts +0 -39
- package/lib/Signal/Group/sender-key-state.d.ts.map +0 -1
- package/lib/Signal/Group/sender-key-state.js.map +0 -1
- package/lib/Signal/Group/sender-message-key.d.ts +0 -12
- package/lib/Signal/Group/sender-message-key.d.ts.map +0 -1
- package/lib/Signal/Group/sender-message-key.js.map +0 -1
- package/lib/Signal/libsignal.d.ts +0 -5
- package/lib/Signal/libsignal.d.ts.map +0 -1
- package/lib/Signal/libsignal.js.map +0 -1
- package/lib/Signal/lid-mapping.d.ts +0 -23
- package/lib/Signal/lid-mapping.d.ts.map +0 -1
- package/lib/Signal/lid-mapping.js +0 -277
- package/lib/Signal/lid-mapping.js.map +0 -1
- package/lib/Socket/Client/index.d.ts +0 -3
- package/lib/Socket/Client/index.d.ts.map +0 -1
- package/lib/Socket/Client/index.js.map +0 -1
- package/lib/Socket/Client/types.d.ts +0 -16
- package/lib/Socket/Client/types.d.ts.map +0 -1
- package/lib/Socket/Client/types.js.map +0 -1
- package/lib/Socket/Client/websocket.d.ts +0 -13
- package/lib/Socket/Client/websocket.d.ts.map +0 -1
- package/lib/Socket/Client/websocket.js.map +0 -1
- package/lib/Socket/business.d.ts +0 -217
- package/lib/Socket/business.d.ts.map +0 -1
- package/lib/Socket/business.js.map +0 -1
- package/lib/Socket/chats.d.ts +0 -124
- package/lib/Socket/chats.d.ts.map +0 -1
- package/lib/Socket/chats.js.map +0 -1
- package/lib/Socket/communities.d.ts +0 -273
- package/lib/Socket/communities.d.ts.map +0 -1
- package/lib/Socket/communities.js +0 -431
- package/lib/Socket/communities.js.map +0 -1
- package/lib/Socket/groups.d.ts +0 -161
- package/lib/Socket/groups.d.ts.map +0 -1
- package/lib/Socket/groups.js.map +0 -1
- package/lib/Socket/index.d.ts +0 -260
- package/lib/Socket/index.d.ts.map +0 -1
- package/lib/Socket/index.js.map +0 -1
- package/lib/Socket/messages-recv.d.ts +0 -203
- package/lib/Socket/messages-recv.d.ts.map +0 -1
- package/lib/Socket/messages-recv.js.map +0 -1
- package/lib/Socket/messages-send.d.ts +0 -199
- package/lib/Socket/messages-send.d.ts.map +0 -1
- package/lib/Socket/messages-send.js.map +0 -1
- package/lib/Socket/mex.d.ts +0 -3
- package/lib/Socket/mex.d.ts.map +0 -1
- package/lib/Socket/mex.js +0 -42
- package/lib/Socket/mex.js.map +0 -1
- package/lib/Socket/newsletter.d.ts +0 -170
- package/lib/Socket/newsletter.d.ts.map +0 -1
- package/lib/Socket/newsletter.js.map +0 -1
- package/lib/Socket/setup.js +0 -433
- package/lib/Socket/socket.d.ts +0 -59
- package/lib/Socket/socket.d.ts.map +0 -1
- package/lib/Socket/socket.js.map +0 -1
- package/lib/Types/Auth.d.ts +0 -117
- package/lib/Types/Auth.d.ts.map +0 -1
- package/lib/Types/Auth.js.map +0 -1
- package/lib/Types/Bussines.d.ts +0 -25
- package/lib/Types/Bussines.d.ts.map +0 -1
- package/lib/Types/Bussines.js +0 -2
- package/lib/Types/Bussines.js.map +0 -1
- package/lib/Types/Call.d.ts +0 -15
- package/lib/Types/Call.d.ts.map +0 -1
- package/lib/Types/Call.js.map +0 -1
- package/lib/Types/Chat.d.ts +0 -124
- package/lib/Types/Chat.d.ts.map +0 -1
- package/lib/Types/Chat.js.map +0 -1
- package/lib/Types/Contact.d.ts +0 -26
- package/lib/Types/Contact.d.ts.map +0 -1
- package/lib/Types/Contact.js.map +0 -1
- package/lib/Types/Events.d.ts +0 -256
- package/lib/Types/Events.d.ts.map +0 -1
- package/lib/Types/Events.js.map +0 -1
- package/lib/Types/GroupMetadata.d.ts +0 -71
- package/lib/Types/GroupMetadata.d.ts.map +0 -1
- package/lib/Types/GroupMetadata.js.map +0 -1
- package/lib/Types/Label.d.ts +0 -47
- package/lib/Types/Label.d.ts.map +0 -1
- package/lib/Types/Label.js.map +0 -1
- package/lib/Types/LabelAssociation.d.ts +0 -30
- package/lib/Types/LabelAssociation.d.ts.map +0 -1
- package/lib/Types/LabelAssociation.js.map +0 -1
- package/lib/Types/Message.d.ts +0 -320
- package/lib/Types/Message.d.ts.map +0 -1
- package/lib/Types/Message.js.map +0 -1
- package/lib/Types/Mex.d.ts +0 -141
- package/lib/Types/Mex.d.ts.map +0 -1
- package/lib/Types/Mex.js +0 -37
- package/lib/Types/Mex.js.map +0 -1
- package/lib/Types/Product.d.ts +0 -79
- package/lib/Types/Product.d.ts.map +0 -1
- package/lib/Types/Product.js.map +0 -1
- package/lib/Types/RichType.d.ts +0 -3
- package/lib/Types/RichType.d.ts.map +0 -1
- package/lib/Types/RichType.js +0 -31
- package/lib/Types/Signal.d.ts +0 -87
- package/lib/Types/Signal.d.ts.map +0 -1
- package/lib/Types/Signal.js.map +0 -1
- package/lib/Types/Socket.d.ts +0 -136
- package/lib/Types/Socket.d.ts.map +0 -1
- package/lib/Types/Socket.js.map +0 -1
- package/lib/Types/State.d.ts +0 -97
- package/lib/Types/State.d.ts.map +0 -1
- package/lib/Types/State.js.map +0 -1
- package/lib/Types/USync.d.ts +0 -26
- package/lib/Types/USync.d.ts.map +0 -1
- package/lib/Types/USync.js.map +0 -1
- package/lib/Types/index.d.ts +0 -65
- package/lib/Types/index.d.ts.map +0 -1
- package/lib/Types/index.js.map +0 -1
- package/lib/Utils/Tiktok.js +0 -80
- package/lib/Utils/auth-utils.d.ts +0 -24
- package/lib/Utils/auth-utils.d.ts.map +0 -1
- package/lib/Utils/auth-utils.js.map +0 -1
- package/lib/Utils/browser-utils.d.ts +0 -4
- package/lib/Utils/browser-utils.d.ts.map +0 -1
- package/lib/Utils/browser-utils.js.map +0 -1
- package/lib/Utils/business.d.ts +0 -23
- package/lib/Utils/business.d.ts.map +0 -1
- package/lib/Utils/business.js.map +0 -1
- package/lib/Utils/chaanel/vyzen.js +0 -0
- package/lib/Utils/chat-utils.d.ts +0 -100
- package/lib/Utils/chat-utils.d.ts.map +0 -1
- package/lib/Utils/chat-utils.js.map +0 -1
- package/lib/Utils/companion-reg-client-utils.d.ts +0 -17
- package/lib/Utils/companion-reg-client-utils.d.ts.map +0 -1
- package/lib/Utils/companion-reg-client-utils.js +0 -35
- package/lib/Utils/companion-reg-client-utils.js.map +0 -1
- package/lib/Utils/crypto.d.ts +0 -37
- package/lib/Utils/crypto.d.ts.map +0 -1
- package/lib/Utils/crypto.js.map +0 -1
- package/lib/Utils/decode-wa-message.d.ts +0 -66
- package/lib/Utils/decode-wa-message.d.ts.map +0 -1
- package/lib/Utils/decode-wa-message.js.map +0 -1
- package/lib/Utils/event-buffer.d.ts +0 -36
- package/lib/Utils/event-buffer.d.ts.map +0 -1
- package/lib/Utils/event-buffer.js.map +0 -1
- package/lib/Utils/facebook.js +0 -48
- package/lib/Utils/generics.d.ts +0 -91
- package/lib/Utils/generics.d.ts.map +0 -1
- package/lib/Utils/generics.js.map +0 -1
- package/lib/Utils/history.d.ts +0 -24
- package/lib/Utils/history.d.ts.map +0 -1
- package/lib/Utils/history.js.map +0 -1
- package/lib/Utils/identity-change-handler.d.ts +0 -44
- package/lib/Utils/identity-change-handler.d.ts.map +0 -1
- package/lib/Utils/identity-change-handler.js +0 -50
- package/lib/Utils/identity-change-handler.js.map +0 -1
- package/lib/Utils/index.d.ts +0 -22
- package/lib/Utils/index.d.ts.map +0 -1
- package/lib/Utils/index.js.map +0 -1
- package/lib/Utils/instagram.js +0 -50
- package/lib/Utils/link-preview.d.ts +0 -21
- package/lib/Utils/link-preview.d.ts.map +0 -1
- package/lib/Utils/link-preview.js.map +0 -1
- package/lib/Utils/logger.d.ts +0 -12
- package/lib/Utils/logger.d.ts.map +0 -1
- package/lib/Utils/logger.js.map +0 -1
- package/lib/Utils/lt-hash.d.ts +0 -8
- package/lib/Utils/lt-hash.d.ts.map +0 -1
- package/lib/Utils/lt-hash.js.map +0 -1
- package/lib/Utils/make-mutex.d.ts +0 -9
- package/lib/Utils/make-mutex.d.ts.map +0 -1
- package/lib/Utils/make-mutex.js.map +0 -1
- package/lib/Utils/message-retry-manager.d.ts +0 -115
- package/lib/Utils/message-retry-manager.d.ts.map +0 -1
- package/lib/Utils/message-retry-manager.js.map +0 -1
- package/lib/Utils/messages-media.d.ts +0 -133
- package/lib/Utils/messages-media.d.ts.map +0 -1
- package/lib/Utils/messages-media.js.map +0 -1
- package/lib/Utils/messages.d.ts +0 -91
- package/lib/Utils/messages.d.ts.map +0 -1
- package/lib/Utils/messages.js.map +0 -1
- package/lib/Utils/noise-handler.d.ts +0 -20
- package/lib/Utils/noise-handler.d.ts.map +0 -1
- package/lib/Utils/noise-handler.js.map +0 -1
- package/lib/Utils/offline-node-processor.d.ts +0 -17
- package/lib/Utils/offline-node-processor.d.ts.map +0 -1
- package/lib/Utils/offline-node-processor.js +0 -40
- package/lib/Utils/offline-node-processor.js.map +0 -1
- package/lib/Utils/pre-key-manager.d.ts +0 -28
- package/lib/Utils/pre-key-manager.d.ts.map +0 -1
- package/lib/Utils/pre-key-manager.js +0 -106
- package/lib/Utils/pre-key-manager.js.map +0 -1
- package/lib/Utils/process-message.d.ts +0 -60
- package/lib/Utils/process-message.d.ts.map +0 -1
- package/lib/Utils/process-message.js.map +0 -1
- package/lib/Utils/reporting-utils.d.ts +0 -11
- package/lib/Utils/reporting-utils.d.ts.map +0 -1
- package/lib/Utils/reporting-utils.js +0 -258
- package/lib/Utils/reporting-utils.js.map +0 -1
- package/lib/Utils/rich-message-utils.js +0 -387
- package/lib/Utils/signal.d.ts +0 -47
- package/lib/Utils/signal.d.ts.map +0 -1
- package/lib/Utils/signal.js.map +0 -1
- package/lib/Utils/stanza-ack.d.ts +0 -11
- package/lib/Utils/stanza-ack.d.ts.map +0 -1
- package/lib/Utils/stanza-ack.js +0 -38
- package/lib/Utils/stanza-ack.js.map +0 -1
- package/lib/Utils/sync-action-utils.d.ts +0 -19
- package/lib/Utils/sync-action-utils.d.ts.map +0 -1
- package/lib/Utils/sync-action-utils.js +0 -49
- package/lib/Utils/sync-action-utils.js.map +0 -1
- package/lib/Utils/tc-token-utils.d.ts +0 -37
- package/lib/Utils/tc-token-utils.d.ts.map +0 -1
- package/lib/Utils/tc-token-utils.js +0 -163
- package/lib/Utils/tc-token-utils.js.map +0 -1
- package/lib/Utils/use-multi-file-auth-state.d.ts +0 -13
- package/lib/Utils/use-multi-file-auth-state.d.ts.map +0 -1
- package/lib/Utils/use-multi-file-auth-state.js.map +0 -1
- package/lib/Utils/validate-connection.d.ts +0 -11
- package/lib/Utils/validate-connection.d.ts.map +0 -1
- package/lib/Utils/validate-connection.js.map +0 -1
- package/lib/Utils/youtube.js +0 -44
- package/lib/WABinary/constants.d.ts +0 -28
- package/lib/WABinary/constants.d.ts.map +0 -1
- package/lib/WABinary/constants.js.map +0 -1
- package/lib/WABinary/decode.d.ts +0 -7
- package/lib/WABinary/decode.d.ts.map +0 -1
- package/lib/WABinary/decode.js.map +0 -1
- package/lib/WABinary/encode.d.ts +0 -3
- package/lib/WABinary/encode.d.ts.map +0 -1
- package/lib/WABinary/encode.js.map +0 -1
- package/lib/WABinary/generic-utils.d.ts +0 -15
- package/lib/WABinary/generic-utils.d.ts.map +0 -1
- package/lib/WABinary/generic-utils.js.map +0 -1
- package/lib/WABinary/index.d.ts +0 -6
- package/lib/WABinary/index.d.ts.map +0 -1
- package/lib/WABinary/index.js.map +0 -1
- package/lib/WABinary/jid-utils.d.ts +0 -48
- package/lib/WABinary/jid-utils.d.ts.map +0 -1
- package/lib/WABinary/jid-utils.js.map +0 -1
- package/lib/WABinary/types.d.ts +0 -19
- package/lib/WABinary/types.d.ts.map +0 -1
- package/lib/WABinary/types.js.map +0 -1
- package/lib/WAM/BinaryInfo.d.ts +0 -9
- package/lib/WAM/BinaryInfo.d.ts.map +0 -1
- package/lib/WAM/BinaryInfo.js.map +0 -1
- package/lib/WAM/constants.d.ts +0 -40
- package/lib/WAM/constants.d.ts.map +0 -1
- package/lib/WAM/constants.js.map +0 -1
- package/lib/WAM/encode.d.ts +0 -3
- package/lib/WAM/encode.d.ts.map +0 -1
- package/lib/WAM/encode.js.map +0 -1
- package/lib/WAM/index.d.ts +0 -4
- package/lib/WAM/index.d.ts.map +0 -1
- package/lib/WAM/index.js.map +0 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +0 -10
- package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/USyncContactProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +0 -23
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/USyncDeviceProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +0 -13
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +0 -13
- package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/USyncStatusProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts +0 -10
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js +0 -25
- package/lib/WAUSync/Protocols/USyncUsernameProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +0 -26
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +0 -10
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/UsyncLIDProtocol.js.map +0 -1
- package/lib/WAUSync/Protocols/index.d.ts +0 -6
- package/lib/WAUSync/Protocols/index.d.ts.map +0 -1
- package/lib/WAUSync/Protocols/index.js.map +0 -1
- package/lib/WAUSync/USyncQuery.d.ts +0 -30
- package/lib/WAUSync/USyncQuery.d.ts.map +0 -1
- package/lib/WAUSync/USyncQuery.js.map +0 -1
- package/lib/WAUSync/USyncUser.d.ts +0 -17
- package/lib/WAUSync/USyncUser.d.ts.map +0 -1
- package/lib/WAUSync/USyncUser.js.map +0 -1
- package/lib/WAUSync/index.d.ts +0 -4
- package/lib/WAUSync/index.d.ts.map +0 -1
- package/lib/WAUSync/index.js.map +0 -1
- package/lib/index.d.ts +0 -12
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.makeNoiseHandler = void 0;
|
|
4
|
-
|
|
5
4
|
const boom_1 = require("@hapi/boom");
|
|
6
5
|
const WAProto_1 = require("../../WAProto");
|
|
7
6
|
const Defaults_1 = require("../Defaults");
|
|
@@ -87,7 +86,7 @@ const makeNoiseHandler = ({ keyPair: { private: privateKey, public: publicKey },
|
|
|
87
86
|
const { intermediate: certIntermediate } = WAProto_1.proto.CertChain.decode(certDecoded);
|
|
88
87
|
const { issuerSerial } = WAProto_1.proto.CertChain.NoiseCertificate.Details.decode(certIntermediate.details);
|
|
89
88
|
if (issuerSerial !== Defaults_1.WA_CERT_DETAILS.SERIAL) {
|
|
90
|
-
throw new boom_1.Boom('certification match failed', { statusCode: 400 });
|
|
89
|
+
throw new boom_1.Boom('certification match failed', { statusCode: 400 });
|
|
91
90
|
}
|
|
92
91
|
const keyEnc = encrypt(noiseKey.public);
|
|
93
92
|
await mixIntoKey(crypto_1.Curve.sharedKey(noiseKey.private, serverHello.ephemeral));
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getChatId = exports.shouldIncrementChatUnread = exports.isRealMessage = exports.cleanMessage = void 0;
|
|
4
|
+
exports.decryptPollVote = decryptPollVote;
|
|
4
5
|
const WAProto_1 = require("../../WAProto");
|
|
5
6
|
const Types_1 = require("../Types");
|
|
6
7
|
const messages_1 = require("../Utils/messages");
|
|
@@ -20,8 +21,21 @@ const REAL_MSG_REQ_ME_STUB_TYPES = new Set([
|
|
|
20
21
|
/** Cleans a received message to further processing */
|
|
21
22
|
const cleanMessage = (message, meId) => {
|
|
22
23
|
// ensure remoteJid and participant doesn't have device or agent in it
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
// normalize JIDs but catch errors to avoid throwing on invalid LIDs/JIDs
|
|
25
|
+
try {
|
|
26
|
+
message.key.remoteJid = (0, WABinary_1.jidNormalizedUser)(message.key.remoteJid);
|
|
27
|
+
}
|
|
28
|
+
catch (_e) {
|
|
29
|
+
// if normalization fails, retain original remoteJid
|
|
30
|
+
}
|
|
31
|
+
if (message.key.participant) {
|
|
32
|
+
try {
|
|
33
|
+
message.key.participant = (0, WABinary_1.jidNormalizedUser)(message.key.participant);
|
|
34
|
+
}
|
|
35
|
+
catch (_e) {
|
|
36
|
+
// ignore if can't normalize participant
|
|
37
|
+
}
|
|
38
|
+
}
|
|
25
39
|
const content = (0, messages_1.normalizeMessageContent)(message.message);
|
|
26
40
|
// if the message has a reaction, ensure fromMe & remoteJid are from our perspective
|
|
27
41
|
if (content === null || content === void 0 ? void 0 : content.reactionMessage) {
|
|
@@ -101,14 +115,14 @@ function decryptPollVote({ encPayload, encIv }, { pollCreatorJid, pollMsgId, pol
|
|
|
101
115
|
return Buffer.from(txt);
|
|
102
116
|
}
|
|
103
117
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
118
|
+
const processMessage = async (message, { shouldProcessHistoryMsg, placeholderResendCache, ev, creds, keyStore, logger, options, getMessage }) => {
|
|
119
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
|
107
120
|
const meId = creds.me.id;
|
|
108
121
|
const { accountSettings } = creds;
|
|
109
122
|
const chat = { id: (0, WABinary_1.jidNormalizedUser)((0, exports.getChatId)(message.key)) };
|
|
110
123
|
const isRealMsg = (0, exports.isRealMessage)(message, meId);
|
|
111
124
|
if (isRealMsg) {
|
|
125
|
+
chat.messages = [{ message }];
|
|
112
126
|
chat.conversationTimestamp = (0, generics_1.toNumber)(message.messageTimestamp);
|
|
113
127
|
// only increment unread count if not CIPHERTEXT and from another person
|
|
114
128
|
if ((0, exports.shouldIncrementChatUnread)(message)) {
|
|
@@ -116,6 +130,25 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
116
130
|
}
|
|
117
131
|
}
|
|
118
132
|
const content = (0, messages_1.normalizeMessageContent)(message.message);
|
|
133
|
+
const senderId = message.key.participant || message.key.remoteJid;
|
|
134
|
+
if ((0, WABinary_1.isLidUser)(senderId)) {
|
|
135
|
+
const jid = (0, WABinary_1.lidToJid)(senderId);
|
|
136
|
+
if (message.key.participant) {
|
|
137
|
+
message.key.participant = jid;
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
message.key.remoteJid = jid;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const mJids = content && content.contextInfo && content.contextInfo.mentionedJid ? content.contextInfo.mentionedJid : [];
|
|
144
|
+
for (let i = 0; i < mJids.length; i++) {
|
|
145
|
+
if ((0, WABinary_1.isLidUser)(mJids[i])) {
|
|
146
|
+
mJids[i] = (0, WABinary_1.lidToJid)(mJids[i]);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (content && content.contextInfo && content.contextInfo.participant && (0, WABinary_1.isLidUser)(content.contextInfo.participant)) {
|
|
150
|
+
content.contextInfo.participant = (0, WABinary_1.lidToJid)(content.contextInfo.participant);
|
|
151
|
+
}
|
|
119
152
|
// unarchive chat if it's a real message, or someone reacted to our message
|
|
120
153
|
// and we've the unarchive chats setting on
|
|
121
154
|
if ((isRealMsg || ((_b = (_a = content === null || content === void 0 ? void 0 : content.reactionMessage) === null || _a === void 0 ? void 0 : _a.key) === null || _b === void 0 ? void 0 : _b.fromMe))
|
|
@@ -137,14 +170,22 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
137
170
|
isLatest,
|
|
138
171
|
}, 'got history notification');
|
|
139
172
|
if (process) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
173
|
+
if (histNotification.syncType !== WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND) {
|
|
174
|
+
ev.emit('creds.update', {
|
|
175
|
+
processedHistoryMessages: [
|
|
176
|
+
...(creds.processedHistoryMessages || []),
|
|
177
|
+
{ key: message.key, messageTimestamp: message.messageTimestamp }
|
|
178
|
+
]
|
|
179
|
+
});
|
|
180
|
+
}
|
|
146
181
|
const data = await (0, history_1.downloadAndProcessHistorySyncNotification)(histNotification, options);
|
|
147
|
-
ev.emit('messaging-history.set', {
|
|
182
|
+
ev.emit('messaging-history.set', {
|
|
183
|
+
...data,
|
|
184
|
+
isLatest: histNotification.syncType !== WAProto_1.proto.HistorySync.HistorySyncType.ON_DEMAND
|
|
185
|
+
? isLatest
|
|
186
|
+
: undefined,
|
|
187
|
+
peerDataRequestSessionId: histNotification.peerDataRequestSessionId
|
|
188
|
+
});
|
|
148
189
|
}
|
|
149
190
|
break;
|
|
150
191
|
case WAProto_1.proto.Message.ProtocolMessage.Type.APP_STATE_SYNC_KEY_SHARE:
|
|
@@ -187,17 +228,41 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
187
228
|
case WAProto_1.proto.Message.ProtocolMessage.Type.PEER_DATA_OPERATION_REQUEST_RESPONSE_MESSAGE:
|
|
188
229
|
const response = protocolMsg.peerDataOperationRequestResponseMessage;
|
|
189
230
|
if (response) {
|
|
231
|
+
placeholderResendCache === null || placeholderResendCache === void 0 ? void 0 : placeholderResendCache.del(response.stanzaId);
|
|
232
|
+
// TODO: IMPLEMENT HISTORY SYNC ETC (sticker uploads etc.).
|
|
190
233
|
const { peerDataOperationResult } = response;
|
|
191
234
|
for (const result of peerDataOperationResult) {
|
|
192
235
|
const { placeholderMessageResendResponse: retryResponse } = result;
|
|
193
236
|
if (retryResponse) {
|
|
194
237
|
const webMessageInfo = WAProto_1.proto.WebMessageInfo.decode(retryResponse.webMessageInfoBytes);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
238
|
+
// wait till another upsert event is available, don't want it to be part of the PDO response message
|
|
239
|
+
setTimeout(() => {
|
|
240
|
+
ev.emit('messages.upsert', {
|
|
241
|
+
messages: [webMessageInfo],
|
|
242
|
+
type: 'notify',
|
|
243
|
+
requestId: response.stanzaId
|
|
244
|
+
});
|
|
245
|
+
}, 500);
|
|
198
246
|
}
|
|
199
247
|
}
|
|
200
248
|
}
|
|
249
|
+
case WAProto_1.proto.Message.ProtocolMessage.Type.MESSAGE_EDIT:
|
|
250
|
+
ev.emit('messages.update', [
|
|
251
|
+
{
|
|
252
|
+
// flip the sender / fromMe properties because they're in the perspective of the sender
|
|
253
|
+
key: { ...message.key, id: (_d = protocolMsg.key) === null || _d === void 0 ? void 0 : _d.id },
|
|
254
|
+
update: {
|
|
255
|
+
message: {
|
|
256
|
+
editedMessage: {
|
|
257
|
+
message: protocolMsg.editedMessage
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
messageTimestamp: protocolMsg.timestampMs
|
|
261
|
+
? Math.floor((0, generics_1.toNumber)(protocolMsg.timestampMs) / 1000)
|
|
262
|
+
: message.messageTimestamp
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
]);
|
|
201
266
|
break;
|
|
202
267
|
}
|
|
203
268
|
}
|
|
@@ -208,11 +273,11 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
208
273
|
};
|
|
209
274
|
ev.emit('messages.reaction', [{
|
|
210
275
|
reaction,
|
|
211
|
-
key: content.reactionMessage.key,
|
|
276
|
+
key: (_e = content.reactionMessage) === null || _e === void 0 ? void 0 : _e.key,
|
|
212
277
|
}]);
|
|
213
278
|
}
|
|
214
279
|
else if (message.messageStubType) {
|
|
215
|
-
const jid = message.key.remoteJid;
|
|
280
|
+
const jid = (_f = message.key) === null || _f === void 0 ? void 0 : _f.remoteJid;
|
|
216
281
|
//let actor = whatsappID (message.participant)
|
|
217
282
|
let participants;
|
|
218
283
|
const emitParticipantsUpdate = (action) => (ev.emit('group-participants.update', { id: jid, author: message.participant, participants, action }));
|
|
@@ -220,8 +285,15 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
220
285
|
var _a;
|
|
221
286
|
ev.emit('groups.update', [{ id: jid, ...update, author: (_a = message.participant) !== null && _a !== void 0 ? _a : undefined }]);
|
|
222
287
|
};
|
|
288
|
+
const emitGroupRequestJoin = (participant, action, method) => {
|
|
289
|
+
ev.emit('group.join-request', { id: jid, author: message.participant, participant, action, method: method });
|
|
290
|
+
};
|
|
223
291
|
const participantsIncludesMe = () => participants.find(jid => (0, WABinary_1.areJidsSameUser)(meId, jid));
|
|
224
292
|
switch (message.messageStubType) {
|
|
293
|
+
case Types_1.WAMessageStubType.GROUP_PARTICIPANT_CHANGE_NUMBER:
|
|
294
|
+
participants = message.messageStubParameters || [];
|
|
295
|
+
emitParticipantsUpdate('modify');
|
|
296
|
+
break;
|
|
225
297
|
case Types_1.WAMessageStubType.GROUP_PARTICIPANT_LEAVE:
|
|
226
298
|
case Types_1.WAMessageStubType.GROUP_PARTICIPANT_REMOVE:
|
|
227
299
|
participants = message.messageStubParameters || [];
|
|
@@ -249,30 +321,41 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
249
321
|
emitParticipantsUpdate('promote');
|
|
250
322
|
break;
|
|
251
323
|
case Types_1.WAMessageStubType.GROUP_CHANGE_ANNOUNCE:
|
|
252
|
-
const announceValue = (
|
|
324
|
+
const announceValue = (_g = message.messageStubParameters) === null || _g === void 0 ? void 0 : _g[0];
|
|
253
325
|
emitGroupUpdate({ announce: announceValue === 'true' || announceValue === 'on' });
|
|
254
326
|
break;
|
|
255
327
|
case Types_1.WAMessageStubType.GROUP_CHANGE_RESTRICT:
|
|
256
|
-
const restrictValue = (
|
|
328
|
+
const restrictValue = (_h = message.messageStubParameters) === null || _h === void 0 ? void 0 : _h[0];
|
|
257
329
|
emitGroupUpdate({ restrict: restrictValue === 'true' || restrictValue === 'on' });
|
|
258
330
|
break;
|
|
259
331
|
case Types_1.WAMessageStubType.GROUP_CHANGE_SUBJECT:
|
|
260
|
-
const name = (
|
|
332
|
+
const name = (_j = message.messageStubParameters) === null || _j === void 0 ? void 0 : _j[0];
|
|
261
333
|
chat.name = name;
|
|
262
334
|
emitGroupUpdate({ subject: name });
|
|
263
335
|
break;
|
|
336
|
+
case Types_1.WAMessageStubType.GROUP_CHANGE_DESCRIPTION:
|
|
337
|
+
const description = (_k = message.messageStubParameters) === null || _k === void 0 ? void 0 : _k[0];
|
|
338
|
+
chat.description = description;
|
|
339
|
+
emitGroupUpdate({ desc: description });
|
|
340
|
+
break;
|
|
264
341
|
case Types_1.WAMessageStubType.GROUP_CHANGE_INVITE_LINK:
|
|
265
|
-
const code = (
|
|
342
|
+
const code = (_l = message.messageStubParameters) === null || _l === void 0 ? void 0 : _l[0];
|
|
266
343
|
emitGroupUpdate({ inviteCode: code });
|
|
267
344
|
break;
|
|
268
345
|
case Types_1.WAMessageStubType.GROUP_MEMBER_ADD_MODE:
|
|
269
|
-
const memberAddValue = (
|
|
346
|
+
const memberAddValue = (_m = message.messageStubParameters) === null || _m === void 0 ? void 0 : _m[0];
|
|
270
347
|
emitGroupUpdate({ memberAddMode: memberAddValue === 'all_member_add' });
|
|
271
348
|
break;
|
|
272
349
|
case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_MODE:
|
|
273
|
-
const approvalMode = (
|
|
350
|
+
const approvalMode = (_o = message.messageStubParameters) === null || _o === void 0 ? void 0 : _o[0];
|
|
274
351
|
emitGroupUpdate({ joinApprovalMode: approvalMode === 'on' });
|
|
275
352
|
break;
|
|
353
|
+
case Types_1.WAMessageStubType.GROUP_MEMBERSHIP_JOIN_APPROVAL_REQUEST_NON_ADMIN_ADD:
|
|
354
|
+
const participant = (_p = message.messageStubParameters) === null || _p === void 0 ? void 0 : _p[0];
|
|
355
|
+
const action = (_q = message.messageStubParameters) === null || _q === void 0 ? void 0 : _q[1];
|
|
356
|
+
const method = (_r = message.messageStubParameters) === null || _r === void 0 ? void 0 : _r[2];
|
|
357
|
+
emitGroupRequestJoin(participant, action, method);
|
|
358
|
+
break;
|
|
276
359
|
}
|
|
277
360
|
}
|
|
278
361
|
else if (content === null || content === void 0 ? void 0 : content.pollUpdateMessage) {
|
|
@@ -283,7 +366,7 @@ const processMessage = async (message, { shouldProcessHistoryMsg, ev, creds, key
|
|
|
283
366
|
const meIdNormalised = (0, WABinary_1.jidNormalizedUser)(meId);
|
|
284
367
|
const pollCreatorJid = (0, generics_1.getKeyAuthor)(creationMsgKey, meIdNormalised);
|
|
285
368
|
const voterJid = (0, generics_1.getKeyAuthor)(message.key, meIdNormalised);
|
|
286
|
-
const pollEncKey = (
|
|
369
|
+
const pollEncKey = (_s = pollMsg.messageContextInfo) === null || _s === void 0 ? void 0 : _s.messageSecret;
|
|
287
370
|
try {
|
|
288
371
|
const voteMsg = decryptPollVote(content.pollUpdateMessage.vote, {
|
|
289
372
|
pollEncKey,
|
package/lib/Utils/signal.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getNextPreKeysNode =
|
|
4
|
-
exports.getNextPreKeys =
|
|
5
|
-
exports.extractDeviceJids =
|
|
6
|
-
exports.parseAndInjectE2ESessions =
|
|
7
|
-
exports.xmppPreKey =
|
|
8
|
-
exports.xmppSignedPreKey =
|
|
9
|
-
exports.generateOrGetPreKeys =
|
|
10
|
-
exports.getPreKeys =
|
|
11
|
-
exports.createSignalIdentity = void 0;
|
|
12
|
-
|
|
3
|
+
exports.getNextPreKeysNode = exports.getNextPreKeys = exports.extractDeviceJids = exports.parseAndInjectE2ESessions = exports.xmppPreKey = exports.xmppSignedPreKey = exports.generateOrGetPreKeys = exports.getPreKeys = exports.createSignalIdentity = void 0;
|
|
13
4
|
const lodash_1 = require("lodash");
|
|
14
5
|
const Defaults_1 = require("../Defaults");
|
|
15
6
|
const WABinary_1 = require("../WABinary");
|
|
@@ -8,7 +8,7 @@ const WAProto_1 = require("../../WAProto");
|
|
|
8
8
|
const auth_utils_1 = require("./auth-utils");
|
|
9
9
|
const generics_1 = require("./generics");
|
|
10
10
|
// We need to lock files due to the fact that we are using async functions to read and write files
|
|
11
|
-
// https://github.com/WhiskeySockets/
|
|
11
|
+
// https://github.com/WhiskeySockets/Wileys/issues/794
|
|
12
12
|
// https://github.com/nodejs/node/issues/26338
|
|
13
13
|
// Use a Map to store mutexes for each file path
|
|
14
14
|
const fileLocks = new Map();
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.encodeSignedDeviceIdentity =
|
|
4
|
-
exports.configureSuccessfulPairing =
|
|
5
|
-
exports.generateRegistrationNode =
|
|
6
|
-
exports.generateLoginNode = void 0;
|
|
7
|
-
|
|
3
|
+
exports.encodeSignedDeviceIdentity = exports.configureSuccessfulPairing = exports.generateRegistrationNode = exports.generateLoginNode = void 0;
|
|
8
4
|
const boom_1 = require("@hapi/boom");
|
|
9
5
|
const crypto_1 = require("crypto");
|
|
10
6
|
const WAProto_1 = require("../../WAProto");
|
|
@@ -76,7 +72,7 @@ const getPlatformType = (platform) => {
|
|
|
76
72
|
};
|
|
77
73
|
|
|
78
74
|
const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
|
|
79
|
-
const appVersionBuf = (0, crypto_1.createHash)('md5')
|
|
75
|
+
const appVersionBuf = (0, crypto_1.createHash)('md5')
|
|
80
76
|
.update(config.version.join('.'))
|
|
81
77
|
.digest();
|
|
82
78
|
|
|
@@ -189,7 +185,7 @@ const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, s
|
|
|
189
185
|
type: 'result',
|
|
190
186
|
id: msgId,
|
|
191
187
|
},
|
|
192
|
-
content: [
|
|
188
|
+
content: [
|
|
193
189
|
{
|
|
194
190
|
tag: 'pair-device-sign',
|
|
195
191
|
attrs: {},
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AudioFeeder = void 0;
|
|
4
|
+
|
|
5
|
+
const child_process_1 = require("node:child_process");
|
|
6
|
+
|
|
7
|
+
const LOW_WATERMARK_CHUNKS = 16;
|
|
8
|
+
const MAX_QUEUED_CHUNKS = 1024;
|
|
9
|
+
const DEFAULT_WARMUP_MS = 500;
|
|
10
|
+
|
|
11
|
+
class AudioFeeder {
|
|
12
|
+
constructor(sampleRate, channels, framesPerChunk, onChunk, source = "silence") {
|
|
13
|
+
this.sampleRate = sampleRate;
|
|
14
|
+
this.channels = channels;
|
|
15
|
+
this.framesPerChunk = framesPerChunk;
|
|
16
|
+
this.onChunk = onChunk;
|
|
17
|
+
this.source = source;
|
|
18
|
+
|
|
19
|
+
this._proc = null;
|
|
20
|
+
this._pending = Buffer.alloc(0);
|
|
21
|
+
this._queue = [];
|
|
22
|
+
this._emitTimer = null;
|
|
23
|
+
this._nextEmitAtMs = 0;
|
|
24
|
+
this._warmupUntilMs = 0;
|
|
25
|
+
|
|
26
|
+
this.droppedChunks = 0;
|
|
27
|
+
this.underflowChunks = 0;
|
|
28
|
+
this.bytesProduced = 0;
|
|
29
|
+
this.chunksEmitted = 0;
|
|
30
|
+
|
|
31
|
+
this.start = () => {
|
|
32
|
+
if (this._proc) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const chunkSamples = this.framesPerChunk * this.channels;
|
|
37
|
+
const chunkBytes = chunkSamples * Float32Array.BYTES_PER_ELEMENT;
|
|
38
|
+
const chunkIntervalMs = (this.framesPerChunk / this.sampleRate) * 1000;
|
|
39
|
+
const inputArgs = this._resolveInputArgs();
|
|
40
|
+
|
|
41
|
+
this._proc = (0, child_process_1.spawn)("ffmpeg", [
|
|
42
|
+
"-hide_banner",
|
|
43
|
+
"-loglevel",
|
|
44
|
+
"error",
|
|
45
|
+
"-thread_queue_size",
|
|
46
|
+
"512",
|
|
47
|
+
...inputArgs,
|
|
48
|
+
"-f",
|
|
49
|
+
"f32le",
|
|
50
|
+
"-ac",
|
|
51
|
+
String(this.channels),
|
|
52
|
+
"-ar",
|
|
53
|
+
String(this.sampleRate),
|
|
54
|
+
"pipe:1"
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
this._proc.stdout.on("data", chunk => {
|
|
58
|
+
this._pending = Buffer.concat([this._pending, chunk]);
|
|
59
|
+
|
|
60
|
+
while (this._pending.length >= chunkBytes) {
|
|
61
|
+
if (this._queue.length >= MAX_QUEUED_CHUNKS) {
|
|
62
|
+
this._proc?.stdout.pause();
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const frame = this._pending.subarray(0, chunkBytes);
|
|
67
|
+
this._pending = this._pending.subarray(chunkBytes);
|
|
68
|
+
|
|
69
|
+
const out = new Float32Array(chunkSamples);
|
|
70
|
+
out.set(new Float32Array(frame.buffer, frame.byteOffset, chunkSamples));
|
|
71
|
+
|
|
72
|
+
this.bytesProduced += chunkBytes;
|
|
73
|
+
this._queue.push(out);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
this._proc.stderr.on("data", chunk => {
|
|
78
|
+
process.stderr.write(`[AudioFeeder] ${chunk.toString().trim()}\n`);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
this._proc.on("exit", code => {
|
|
82
|
+
if (code !== 0 && code !== null) {
|
|
83
|
+
process.stderr.write(`[AudioFeeder] ffmpeg exited with code=${code}\n`);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this._proc = null;
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
this._nextEmitAtMs = 0;
|
|
90
|
+
this._warmupUntilMs = Date.now() + DEFAULT_WARMUP_MS;
|
|
91
|
+
this._scheduleNext(chunkSamples, chunkIntervalMs);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
this.stop = () => {
|
|
95
|
+
if (this._emitTimer) {
|
|
96
|
+
clearTimeout(this._emitTimer);
|
|
97
|
+
this._emitTimer = null;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this._proc?.kill("SIGTERM");
|
|
101
|
+
this._proc = null;
|
|
102
|
+
this._pending = Buffer.alloc(0);
|
|
103
|
+
this._queue = [];
|
|
104
|
+
this._warmupUntilMs = 0;
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
this._resolveInputArgs = () => {
|
|
108
|
+
if (!this.source || this.source === "silence") {
|
|
109
|
+
return ["-f", "lavfi", "-i", `aevalsrc=0:d=3600:s=${this.sampleRate}`];
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (this.source.startsWith("lavfi:")) {
|
|
113
|
+
return ["-f", "lavfi", "-i", this.source.slice("lavfi:".length)];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return ["-i", this.source];
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
this._scheduleNext = (chunkSamples, chunkIntervalMs) => {
|
|
120
|
+
if (!this._proc) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const now = Date.now();
|
|
125
|
+
|
|
126
|
+
if (this._nextEmitAtMs === 0) {
|
|
127
|
+
this._nextEmitAtMs = now;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const delayMs = Math.max(0, this._nextEmitAtMs - now);
|
|
131
|
+
|
|
132
|
+
this._emitTimer = setTimeout(() => {
|
|
133
|
+
this._emitTimer = null;
|
|
134
|
+
|
|
135
|
+
if (this._queue.length < LOW_WATERMARK_CHUNKS && Date.now() < this._warmupUntilMs) {
|
|
136
|
+
this._nextEmitAtMs = Date.now() + 10;
|
|
137
|
+
this._scheduleNext(chunkSamples, chunkIntervalMs);
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
this._flushOne(chunkSamples);
|
|
142
|
+
this._nextEmitAtMs += chunkIntervalMs;
|
|
143
|
+
this._scheduleNext(chunkSamples, chunkIntervalMs);
|
|
144
|
+
}, delayMs);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
this._flushOne = chunkSamples => {
|
|
148
|
+
let nextChunk = this._queue.shift();
|
|
149
|
+
|
|
150
|
+
if (!nextChunk) {
|
|
151
|
+
nextChunk = new Float32Array(chunkSamples);
|
|
152
|
+
this.underflowChunks += 1;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
this.chunksEmitted += 1;
|
|
156
|
+
this.onChunk(nextChunk);
|
|
157
|
+
|
|
158
|
+
if (this._proc?.stdout.isPaused() && this._queue.length <= MAX_QUEUED_CHUNKS / 4) {
|
|
159
|
+
this._proc.stdout.resume();
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
exports.AudioFeeder = AudioFeeder;
|
|
166
|
+
exports.default = AudioFeeder;
|