@openclaw/whatsapp 2026.7.2-beta.5 → 2026.7.2-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{action-runtime-B2bNDUwE.js → action-runtime-BzfDFPbH.js} +1 -1
- package/dist/action-runtime-api.js +1 -1
- package/dist/action-runtime.runtime.js +1 -1
- package/dist/{agent-tools-login-DfyToBpG.js → agent-tools-login-DE9MU98T.js} +1 -1
- package/dist/api.js +4 -4
- package/dist/{approval-handler.runtime-CmtqgLSQ.js → approval-handler.runtime-DrA59QSA.js} +1 -1
- package/dist/{channel-DcWBc3Hb.js → channel-Dg62olhy.js} +28 -27
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-react-action-DUIkjl6w.js → channel-react-action-J_YtyMGX.js} +2 -2
- package/dist/{channel.runtime-Q5fJ2I2b.js → channel.runtime-BP0xNmLi.js} +2 -2
- package/dist/{channel.setup-C_1u6HN6.js → channel.setup-pMwNVkCA.js} +3 -2
- package/dist/{config-schema-DARep0Nn.js → config-schema-BQP5YCeK.js} +8 -0
- package/dist/light-runtime-api.js +1 -1
- package/dist/{monitor-B7phZF9w.js → monitor-CfkaUSL2.js} +1132 -830
- package/dist/runtime-api.js +5 -5
- package/dist/{send-BTXJAyK4.js → send-D37ddk22.js} +11 -6
- package/dist/{send-api-BY_AkSiB.js → send-api-7wk6eQyW.js} +12 -7
- package/dist/{setup-finalize-C-m-vCl9.js → setup-finalize-BZucx24W.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BjvUbR6M.js → setup-surface-BkVcd769.js} +1 -1
- package/dist/{shared-UcAwtJaq.js → shared-CAxd15bp.js} +16 -52
- package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/index.js +20 -21
- package/node_modules/{p-queue → baileys/node_modules/p-queue}/package.json +1 -1
- package/node_modules/baileys/node_modules/protobufjs/README.md +440 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/dist/light/protobuf.js +3150 -1915
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.js.map +1 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js +8 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/light/protobuf.min.js.map +1 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/dist/minimal/protobuf.js +1968 -1203
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.js.map +1 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js +8 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +1 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/dist/protobuf.js +3326 -1961
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.js.map +1 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js +8 -0
- package/node_modules/baileys/node_modules/protobufjs/dist/protobuf.min.js.map +1 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/README.md +70 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/README.md +5 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/index.d.ts +2 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor/index.js +2 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.d.ts +87 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/descriptor.generated.d.ts +417 -0
- package/node_modules/{protobufjs/ext/descriptor/index.js → baileys/node_modules/protobufjs/ext/descriptor.js} +379 -209
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.LICENSE +201 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.d.ts +20 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.generated.d.ts +49 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/protojson.js +951 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.d.ts +19 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.generated.d.ts +33 -0
- package/node_modules/baileys/node_modules/protobufjs/ext/textformat.js +1276 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/annotations.json +3 -1
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/http.json +2 -1
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/api.json +12 -6
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/compiler/plugin.json +126 -0
- package/node_modules/baileys/node_modules/protobufjs/google/protobuf/compiler/plugin.proto +47 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/descriptor.json +170 -87
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/descriptor.proto +0 -8
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/source_context.json +2 -1
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/type.json +14 -7
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/index.d.ts +1073 -702
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/package.json +25 -51
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/common.js +14 -8
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/converter.js +85 -51
- package/node_modules/baileys/node_modules/protobufjs/src/decoder.js +279 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/encoder.js +27 -7
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/enum.js +18 -5
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/field.js +71 -19
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/index-light.js +29 -29
- package/node_modules/baileys/node_modules/protobufjs/src/index-minimal.js +35 -0
- package/node_modules/baileys/node_modules/protobufjs/src/index.js +12 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/mapfield.js +26 -8
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/message.js +5 -11
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/method.js +30 -7
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/namespace.js +26 -10
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/object.js +41 -31
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/oneof.js +12 -1
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/parse.js +166 -47
- package/node_modules/baileys/node_modules/protobufjs/src/reader.js +788 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/reader_buffer.js +31 -5
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/root.js +16 -4
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/rpc/service.js +18 -5
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/service.js +15 -2
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/tokenize.js +6 -1
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/type.js +80 -36
- package/node_modules/baileys/node_modules/protobufjs/src/typescript.js +25 -0
- package/node_modules/{@protobufjs/aspromise/index.d.ts → baileys/node_modules/protobufjs/src/util/aspromise.d.ts} +13 -13
- package/node_modules/{@protobufjs/aspromise/index.js → baileys/node_modules/protobufjs/src/util/aspromise.js} +52 -52
- package/node_modules/{@protobufjs/base64/index.d.ts → baileys/node_modules/protobufjs/src/util/base64.d.ts} +32 -32
- package/node_modules/{@protobufjs/base64/index.js → baileys/node_modules/protobufjs/src/util/base64.js} +146 -139
- package/node_modules/{@protobufjs/codegen/index.d.ts → baileys/node_modules/protobufjs/src/util/codegen.d.ts} +31 -31
- package/node_modules/{@protobufjs/codegen/index.js → baileys/node_modules/protobufjs/src/util/codegen.js} +118 -112
- package/node_modules/{@protobufjs/eventemitter/index.d.ts → baileys/node_modules/protobufjs/src/util/eventemitter.d.ts} +45 -45
- package/node_modules/{@protobufjs/eventemitter/index.js → baileys/node_modules/protobufjs/src/util/eventemitter.js} +86 -86
- package/node_modules/{@protobufjs/fetch/index.d.ts → baileys/node_modules/protobufjs/src/util/fetch.d.ts} +56 -56
- package/node_modules/{@protobufjs/fetch/index.js → baileys/node_modules/protobufjs/src/util/fetch.js} +112 -112
- package/node_modules/{@protobufjs/float/index.js → baileys/node_modules/protobufjs/src/util/float.js} +335 -335
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/longbits.js +10 -6
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/minimal.js +71 -51
- package/node_modules/{@protobufjs/path/index.d.ts → baileys/node_modules/protobufjs/src/util/path.d.ts} +22 -22
- package/node_modules/{@protobufjs/path/index.js → baileys/node_modules/protobufjs/src/util/path.js} +100 -65
- package/node_modules/{@protobufjs/pool/index.d.ts → baileys/node_modules/protobufjs/src/util/pool.d.ts} +32 -32
- package/node_modules/{@protobufjs/pool/index.js → baileys/node_modules/protobufjs/src/util/pool.js} +48 -48
- package/node_modules/{@protobufjs/utf8/index.d.ts → baileys/node_modules/protobufjs/src/util/utf8.d.ts} +24 -24
- package/node_modules/baileys/node_modules/protobufjs/src/util/utf8.js +190 -0
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util.js +51 -17
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/verifier.js +19 -14
- package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/wrappers.js +2 -3
- package/node_modules/baileys/node_modules/protobufjs/src/writer.js +700 -0
- package/node_modules/baileys/node_modules/protobufjs/src/writer_buffer.js +100 -0
- package/node_modules/baileys/node_modules/protobufjs/tsconfig.json +6 -0
- package/openclaw.plugin.json +8 -0
- package/package.json +5 -5
- package/node_modules/@protobufjs/aspromise/LICENSE +0 -26
- package/node_modules/@protobufjs/aspromise/README.md +0 -13
- package/node_modules/@protobufjs/aspromise/package.json +0 -21
- package/node_modules/@protobufjs/aspromise/tests/index.js +0 -130
- package/node_modules/@protobufjs/base64/LICENSE +0 -26
- package/node_modules/@protobufjs/base64/README.md +0 -19
- package/node_modules/@protobufjs/base64/package.json +0 -21
- package/node_modules/@protobufjs/base64/tests/index.js +0 -46
- package/node_modules/@protobufjs/codegen/LICENSE +0 -26
- package/node_modules/@protobufjs/codegen/README.md +0 -49
- package/node_modules/@protobufjs/codegen/package.json +0 -13
- package/node_modules/@protobufjs/codegen/tests/index.js +0 -13
- package/node_modules/@protobufjs/eventemitter/CHANGELOG.md +0 -8
- package/node_modules/@protobufjs/eventemitter/LICENSE +0 -26
- package/node_modules/@protobufjs/eventemitter/README.md +0 -22
- package/node_modules/@protobufjs/eventemitter/package.json +0 -21
- package/node_modules/@protobufjs/eventemitter/tests/index.js +0 -83
- package/node_modules/@protobufjs/fetch/CHANGELOG.md +0 -8
- package/node_modules/@protobufjs/fetch/LICENSE +0 -26
- package/node_modules/@protobufjs/fetch/README.md +0 -13
- package/node_modules/@protobufjs/fetch/package.json +0 -27
- package/node_modules/@protobufjs/fetch/tests/data/file.txt +0 -1
- package/node_modules/@protobufjs/fetch/tests/index.js +0 -158
- package/node_modules/@protobufjs/fetch/util/fs.js +0 -11
- package/node_modules/@protobufjs/float/LICENSE +0 -26
- package/node_modules/@protobufjs/float/README.md +0 -102
- package/node_modules/@protobufjs/float/bench/index.js +0 -87
- package/node_modules/@protobufjs/float/bench/suite.js +0 -46
- package/node_modules/@protobufjs/float/package.json +0 -26
- package/node_modules/@protobufjs/float/tests/index.js +0 -100
- package/node_modules/@protobufjs/path/LICENSE +0 -26
- package/node_modules/@protobufjs/path/README.md +0 -19
- package/node_modules/@protobufjs/path/package.json +0 -21
- package/node_modules/@protobufjs/path/tests/index.js +0 -60
- package/node_modules/@protobufjs/pool/.npmignore +0 -3
- package/node_modules/@protobufjs/pool/LICENSE +0 -26
- package/node_modules/@protobufjs/pool/README.md +0 -13
- package/node_modules/@protobufjs/pool/package.json +0 -21
- package/node_modules/@protobufjs/pool/tests/index.js +0 -33
- package/node_modules/@protobufjs/utf8/CHANGELOG.md +0 -8
- package/node_modules/@protobufjs/utf8/LICENSE +0 -26
- package/node_modules/@protobufjs/utf8/README.md +0 -20
- package/node_modules/@protobufjs/utf8/index.js +0 -115
- package/node_modules/@protobufjs/utf8/package.json +0 -21
- package/node_modules/@protobufjs/utf8/tests/data/surrogate_pair_bug.txt +0 -207
- package/node_modules/@protobufjs/utf8/tests/data/utf8.txt +0 -216
- package/node_modules/@protobufjs/utf8/tests/index.js +0 -79
- package/node_modules/@types/node/LICENSE +0 -21
- package/node_modules/@types/node/README.md +0 -15
- package/node_modules/@types/node/assert/strict.d.ts +0 -68
- package/node_modules/@types/node/assert.d.ts +0 -1077
- package/node_modules/@types/node/async_hooks.d.ts +0 -711
- package/node_modules/@types/node/buffer.buffer.d.ts +0 -466
- package/node_modules/@types/node/buffer.d.ts +0 -1799
- package/node_modules/@types/node/child_process.d.ts +0 -1362
- package/node_modules/@types/node/cluster.d.ts +0 -432
- package/node_modules/@types/node/console.d.ts +0 -93
- package/node_modules/@types/node/constants.d.ts +0 -14
- package/node_modules/@types/node/crypto.d.ts +0 -3954
- package/node_modules/@types/node/dgram.d.ts +0 -537
- package/node_modules/@types/node/diagnostics_channel.d.ts +0 -794
- package/node_modules/@types/node/dns/promises.d.ts +0 -497
- package/node_modules/@types/node/dns.d.ts +0 -876
- package/node_modules/@types/node/domain.d.ts +0 -150
- package/node_modules/@types/node/events.d.ts +0 -1008
- package/node_modules/@types/node/ffi.d.ts +0 -486
- package/node_modules/@types/node/fs/promises.d.ts +0 -1481
- package/node_modules/@types/node/fs.d.ts +0 -4786
- package/node_modules/@types/node/globals.d.ts +0 -150
- package/node_modules/@types/node/globals.typedarray.d.ts +0 -101
- package/node_modules/@types/node/http.d.ts +0 -2172
- package/node_modules/@types/node/http2.d.ts +0 -2489
- package/node_modules/@types/node/https.d.ts +0 -400
- package/node_modules/@types/node/index.d.ts +0 -115
- package/node_modules/@types/node/inspector/promises.d.ts +0 -35
- package/node_modules/@types/node/inspector.d.ts +0 -264
- package/node_modules/@types/node/inspector.generated.d.ts +0 -4406
- package/node_modules/@types/node/module.d.ts +0 -726
- package/node_modules/@types/node/net.d.ts +0 -970
- package/node_modules/@types/node/os.d.ts +0 -498
- package/node_modules/@types/node/package.json +0 -155
- package/node_modules/@types/node/path/posix.d.ts +0 -8
- package/node_modules/@types/node/path/win32.d.ts +0 -8
- package/node_modules/@types/node/path.d.ts +0 -178
- package/node_modules/@types/node/perf_hooks.d.ts +0 -604
- package/node_modules/@types/node/process.d.ts +0 -2217
- package/node_modules/@types/node/punycode.d.ts +0 -89
- package/node_modules/@types/node/querystring.d.ts +0 -139
- package/node_modules/@types/node/quic.d.ts +0 -978
- package/node_modules/@types/node/readline/promises.d.ts +0 -158
- package/node_modules/@types/node/readline.d.ts +0 -508
- package/node_modules/@types/node/repl.d.ts +0 -420
- package/node_modules/@types/node/sea.d.ts +0 -47
- package/node_modules/@types/node/sqlite.d.ts +0 -1123
- package/node_modules/@types/node/stream/consumers.d.ts +0 -114
- package/node_modules/@types/node/stream/iter.d.ts +0 -451
- package/node_modules/@types/node/stream/promises.d.ts +0 -211
- package/node_modules/@types/node/stream/web.d.ts +0 -300
- package/node_modules/@types/node/stream.d.ts +0 -1806
- package/node_modules/@types/node/string_decoder.d.ts +0 -27
- package/node_modules/@types/node/test/reporters.d.ts +0 -59
- package/node_modules/@types/node/test.d.ts +0 -2389
- package/node_modules/@types/node/timers/promises.d.ts +0 -93
- package/node_modules/@types/node/timers.d.ts +0 -149
- package/node_modules/@types/node/tls.d.ts +0 -1193
- package/node_modules/@types/node/trace_events.d.ts +0 -103
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +0 -462
- package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
- package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -36
- package/node_modules/@types/node/ts5.6/index.d.ts +0 -117
- package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
- package/node_modules/@types/node/ts5.7/index.d.ts +0 -117
- package/node_modules/@types/node/tty.d.ts +0 -225
- package/node_modules/@types/node/url.d.ts +0 -556
- package/node_modules/@types/node/util/types.d.ts +0 -558
- package/node_modules/@types/node/util.d.ts +0 -1677
- package/node_modules/@types/node/v8.d.ts +0 -1062
- package/node_modules/@types/node/vm.d.ts +0 -1136
- package/node_modules/@types/node/wasi.d.ts +0 -131
- package/node_modules/@types/node/web-globals/abortcontroller.d.ts +0 -59
- package/node_modules/@types/node/web-globals/blob.d.ts +0 -23
- package/node_modules/@types/node/web-globals/console.d.ts +0 -9
- package/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
- package/node_modules/@types/node/web-globals/domexception.d.ts +0 -83
- package/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
- package/node_modules/@types/node/web-globals/events.d.ts +0 -106
- package/node_modules/@types/node/web-globals/fetch.d.ts +0 -69
- package/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
- package/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
- package/node_modules/@types/node/web-globals/navigator.d.ts +0 -25
- package/node_modules/@types/node/web-globals/performance.d.ts +0 -45
- package/node_modules/@types/node/web-globals/storage.d.ts +0 -24
- package/node_modules/@types/node/web-globals/streams.d.ts +0 -115
- package/node_modules/@types/node/web-globals/timers.d.ts +0 -44
- package/node_modules/@types/node/web-globals/url.d.ts +0 -24
- package/node_modules/@types/node/worker_threads.d.ts +0 -669
- package/node_modules/@types/node/zlib/iter.d.ts +0 -131
- package/node_modules/@types/node/zlib.d.ts +0 -589
- package/node_modules/protobufjs/README.md +0 -727
- package/node_modules/protobufjs/dist/light/protobuf.js.map +0 -1
- package/node_modules/protobufjs/dist/light/protobuf.min.js +0 -8
- package/node_modules/protobufjs/dist/light/protobuf.min.js.map +0 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.js.map +0 -1
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js +0 -8
- package/node_modules/protobufjs/dist/minimal/protobuf.min.js.map +0 -1
- package/node_modules/protobufjs/dist/protobuf.js.map +0 -1
- package/node_modules/protobufjs/dist/protobuf.min.js +0 -8
- package/node_modules/protobufjs/dist/protobuf.min.js.map +0 -1
- package/node_modules/protobufjs/ext/descriptor/README.md +0 -72
- package/node_modules/protobufjs/ext/descriptor/index.d.ts +0 -195
- package/node_modules/protobufjs/ext/descriptor/test.js +0 -54
- package/node_modules/protobufjs/scripts/postinstall.js +0 -32
- package/node_modules/protobufjs/src/decoder.js +0 -135
- package/node_modules/protobufjs/src/index-minimal.js +0 -36
- package/node_modules/protobufjs/src/index.js +0 -12
- package/node_modules/protobufjs/src/reader.js +0 -426
- package/node_modules/protobufjs/src/typescript.jsdoc +0 -15
- package/node_modules/protobufjs/src/writer.js +0 -467
- package/node_modules/protobufjs/src/writer_buffer.js +0 -85
- package/node_modules/protobufjs/tsconfig.json +0 -8
- package/node_modules/undici-types/LICENSE +0 -21
- package/node_modules/undici-types/README.md +0 -6
- package/node_modules/undici-types/agent.d.ts +0 -30
- package/node_modules/undici-types/api.d.ts +0 -43
- package/node_modules/undici-types/balanced-pool.d.ts +0 -30
- package/node_modules/undici-types/cache-interceptor.d.ts +0 -179
- package/node_modules/undici-types/cache.d.ts +0 -36
- package/node_modules/undici-types/client-stats.d.ts +0 -15
- package/node_modules/undici-types/client.d.ts +0 -129
- package/node_modules/undici-types/connector.d.ts +0 -36
- package/node_modules/undici-types/content-type.d.ts +0 -21
- package/node_modules/undici-types/cookies.d.ts +0 -30
- package/node_modules/undici-types/diagnostics-channel.d.ts +0 -74
- package/node_modules/undici-types/dispatcher.d.ts +0 -253
- package/node_modules/undici-types/dispatcher1-wrapper.d.ts +0 -7
- package/node_modules/undici-types/env-http-proxy-agent.d.ts +0 -22
- package/node_modules/undici-types/errors.d.ts +0 -177
- package/node_modules/undici-types/eventsource.d.ts +0 -66
- package/node_modules/undici-types/fetch.d.ts +0 -231
- package/node_modules/undici-types/formdata.d.ts +0 -108
- package/node_modules/undici-types/global-dispatcher.d.ts +0 -9
- package/node_modules/undici-types/global-origin.d.ts +0 -7
- package/node_modules/undici-types/h2c-client.d.ts +0 -73
- package/node_modules/undici-types/handlers.d.ts +0 -14
- package/node_modules/undici-types/header.d.ts +0 -165
- package/node_modules/undici-types/index.d.ts +0 -93
- package/node_modules/undici-types/interceptors.d.ts +0 -80
- package/node_modules/undici-types/mock-agent.d.ts +0 -68
- package/node_modules/undici-types/mock-call-history.d.ts +0 -111
- package/node_modules/undici-types/mock-client.d.ts +0 -27
- package/node_modules/undici-types/mock-errors.d.ts +0 -12
- package/node_modules/undici-types/mock-interceptor.d.ts +0 -94
- package/node_modules/undici-types/mock-pool.d.ts +0 -27
- package/node_modules/undici-types/package.json +0 -55
- package/node_modules/undici-types/patch.d.ts +0 -29
- package/node_modules/undici-types/pool-stats.d.ts +0 -19
- package/node_modules/undici-types/pool.d.ts +0 -39
- package/node_modules/undici-types/proxy-agent.d.ts +0 -29
- package/node_modules/undici-types/readable.d.ts +0 -68
- package/node_modules/undici-types/retry-agent.d.ts +0 -8
- package/node_modules/undici-types/retry-handler.d.ts +0 -125
- package/node_modules/undici-types/round-robin-pool.d.ts +0 -39
- package/node_modules/undici-types/snapshot-agent.d.ts +0 -113
- package/node_modules/undici-types/socks5-proxy-agent.d.ts +0 -25
- package/node_modules/undici-types/util.d.ts +0 -18
- package/node_modules/undici-types/utility.d.ts +0 -7
- package/node_modules/undici-types/webidl.d.ts +0 -346
- package/node_modules/undici-types/websocket.d.ts +0 -188
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/LICENSE +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/README.md +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/browser.js +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/cjs/browser.js +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/cjs/node.js +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/index.d.ts +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/node.js +0 -0
- /package/node_modules/{@eshaz → audio-decode/node_modules/@eshaz}/web-worker/package.json +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/LICENSE +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/README.md +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/index.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/index.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/input.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/input.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/output.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/output.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/package.json +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/simple.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/bitstream/simple.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/LICENSE +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/README.md +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/assert.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/assert.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/deferror.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/deferror.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/ensure.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/ensure.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arguments.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arguments.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arity.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-arity.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-state.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/illegal-state.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/index.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/index.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/io.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/io.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/out-of-bounds.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/out-of-bounds.js +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/package.json +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/unsupported.d.ts +0 -0
- /package/node_modules/{@thi.ng → audio-decode/node_modules/@thi.ng}/errors/unsupported.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/index.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/package.json +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/WASMAudioDecoderCommon.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/WASMAudioDecoderWorker.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/README +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/build_puff.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/puff.c +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/puff/puff.h +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/src/utilities.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/common/types.d.ts +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/README.md +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/dist/flac-decoder.min.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/dist/flac-decoder.min.js.map +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/index.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/package.json +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/EmscriptenWasm.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/FLACDecoder.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/src/FLACDecoderWebWorker.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/flac/types.d.ts +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/README.md +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/dist/ogg-vorbis-decoder.min.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/dist/ogg-vorbis-decoder.min.js.map +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/index.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/package.json +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/EmscriptenWasm.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/OggVorbisDecoder.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/src/OggVorbisDecoderWebWorker.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/ogg-vorbis/types.d.ts +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/README.md +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/dist/opus-ml-decoder.min.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/dist/opus-ml-decoder.min.js.map +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/index.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/package.json +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/EmscriptenWasm.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/OpusMLDecoder.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/src/OpusMLDecoderWebWorker.js +0 -0
- /package/node_modules/{@wasm-audio-decoders → audio-decode/node_modules/@wasm-audio-decoders}/opus-ml/types.d.ts +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.eslintrc.json +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.github/workflows/node.js.yml +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/.travis.yml +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/LICENSE +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/index.js +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/package.json +0 -0
- /package/node_modules/{audio-buffer → audio-decode/node_modules/audio-buffer}/readme.md +0 -0
- /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/audio-type.js +0 -0
- /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/license +0 -0
- /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/package.json +0 -0
- /package/node_modules/{audio-type → audio-decode/node_modules/audio-type}/readme.md +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/.github/FUNDING.yml +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/.prettierignore +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/LICENSE +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/README.md +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/index.d.ts +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/index.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/package.json +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/CodecParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/CodecFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/CodecHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/HeaderCache.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/Parser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/aac/AACParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/flac/FLACParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/mpeg/MPEGParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/opus/OpusParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisFrame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/codecs/vorbis/VorbisParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/constants.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/Frame.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggPage.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggPageHeader.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/containers/ogg/OggParser.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/globals.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/metadata/ID3v2.js +0 -0
- /package/node_modules/{codec-parser → audio-decode/node_modules/codec-parser}/src/utilities.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/README.md +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/dist/mpg123-decoder.min.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/dist/mpg123-decoder.min.js.map +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/index.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/package.json +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/EmscriptenWasm.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/MPEGDecoder.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/src/MPEGDecoderWebWorker.js +0 -0
- /package/node_modules/{mpg123-decoder → audio-decode/node_modules/mpg123-decoder}/types.d.ts +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/README.md +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/file.wav +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/index.js +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/package.json +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/tests/file1.wav +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/tests/test.js +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.js +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.json +0 -0
- /package/node_modules/{node-wav → audio-decode/node_modules/node-wav}/x.js~ +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/README.md +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.min.js +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.min.js.map +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.opus-ml.min.js +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/dist/ogg-opus-decoder.opus-ml.min.js.map +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/index.js +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/package.json +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/src/OggOpusDecoder.js +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/src/OggOpusDecoderWebWorker.js +0 -0
- /package/node_modules/{ogg-opus-decoder → audio-decode/node_modules/ogg-opus-decoder}/types.d.ts +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/README.md +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/dist/opus-decoder.min.js +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/dist/opus-decoder.min.js.map +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/index.js +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/package.json +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/EmscriptenWasm.js +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/OpusDecoder.js +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/src/OpusDecoderWebWorker.js +0 -0
- /package/node_modules/{opus-decoder → audio-decode/node_modules/opus-decoder}/types.d.ts +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/LICENSE.md +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/README.md +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/decode.js +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/encode.js +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/index.js +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/lib/common.js +0 -0
- /package/node_modules/{qoa-format → audio-decode/node_modules/qoa-format}/package.json +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/.github/FUNDING.yml +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/.prettierignore +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/LICENSE +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/README.md +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/dist/esm.js +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/dist/index.js +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/package.json +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/rollup.config.js +0 -0
- /package/node_modules/{simple-yenc → audio-decode/node_modules/simple-yenc}/src/simple-yenc.js +0 -0
- /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/LICENSE.txt +0 -0
- /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/README.md +0 -0
- /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/lib/index.d.ts +0 -0
- /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/lib/index.js +0 -0
- /package/node_modules/{@borewit → baileys/node_modules/@borewit}/text-codec/package.json +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/LICENSE +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/README.md +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.cjs +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.d.cts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.d.mts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/dist/index.mjs +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/memory/package.json +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/LICENSE +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/README.md +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.cjs +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.d.cts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.d.ts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/dist/index.js +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/node-cache/package.json +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/LICENSE +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/README.md +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.cjs +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.d.cts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.d.mts +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/dist/index.mjs +0 -0
- /package/node_modules/{@cacheable → baileys/node_modules/@cacheable}/utils/package.json +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/LICENSE.md +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/README.md +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/lib/index.d.ts +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/lib/index.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/boom/package.json +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/LICENSE.md +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/README.md +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/applyToDefaults.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/assert.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/bench.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/block.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/clone.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/contain.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/deepEqual.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/error.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeHeaderAttribute.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeHtml.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeJson.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/escapeRegex.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/flatten.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/ignore.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/index.d.ts +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/index.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/intersect.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/isPromise.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/merge.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/once.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/reach.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/reachTemplate.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/stringify.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/types.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/utils.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/lib/wait.js +0 -0
- /package/node_modules/{@hapi → baileys/node_modules/@hapi}/hoek/package.json +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/LICENSE +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/README.md +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.cjs +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.d.cts +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.d.ts +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/dist/index.js +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/bigmap/package.json +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/LICENSE +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/README.md +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.cjs +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.d.cts +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.d.ts +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/dist/index.js +0 -0
- /package/node_modules/{@keyv → baileys/node_modules/@keyv}/serialize/package.json +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/dependabot.yml +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/workflows/ci.yml +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/.github/workflows/publish-release.yml +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/LICENSE +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/README.md +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/benchmarks/basic.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/eslint.config.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.d.ts +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/index.test-d.ts +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/package.json +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/scripts/sync-version.mjs +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/actual-redact-comparison.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/index.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/integration.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/multiple-wildcards.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/prototype-pollution.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/test/selective-clone.test.js +0 -0
- /package/node_modules/{@pinojs → baileys/node_modules/@pinojs}/redact/tsconfig.json +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/LICENSE +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/README.md +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/GzipHandler.d.ts +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/GzipHandler.js +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipHandler.d.ts +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipHandler.js +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipToken.d.ts +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/ZipToken.js +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/index.d.ts +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/lib/index.js +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/inflate/package.json +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/README.md +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/index.d.ts +0 -0
- /package/node_modules/{@tokenizer → baileys/node_modules/@tokenizer}/token/package.json +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/LICENSE +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/README.md +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/Mutex.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/MutexInterface.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/Semaphore.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/SemaphoreInterface.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/errors.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/index.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/tryAcquire.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/es6/withTimeout.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/index.mjs +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Mutex.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Mutex.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/MutexInterface.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/MutexInterface.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Semaphore.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/Semaphore.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/SemaphoreInterface.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/SemaphoreInterface.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/errors.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/errors.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/index.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/index.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/tryAcquire.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/tryAcquire.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/withTimeout.d.ts +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/lib/withTimeout.js +0 -0
- /package/node_modules/{async-mutex → baileys/node_modules/async-mutex}/package.json +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/.travis.yml +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/LICENSE +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/index.js +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/package.json +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/readme.md +0 -0
- /package/node_modules/{atomic-sleep → baileys/node_modules/atomic-sleep}/test.js +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/LICENSE +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/README.md +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.cjs +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.d.cts +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.d.mts +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/dist/index.mjs +0 -0
- /package/node_modules/{cacheable → baileys/node_modules/cacheable}/package.json +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/LICENSE +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/README.md +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.d.ts +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.js +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/dist/index.js.map +0 -0
- /package/node_modules/{content-type → baileys/node_modules/content-type}/package.json +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/.prettierrc +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/LICENSE +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/README.md +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/lib/index.d.ts +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/lib/index.js +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/package.json +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/tsconfig.json +0 -0
- /package/node_modules/{curve25519-js → baileys/node_modules/curve25519-js}/tslint.json +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/LICENSE +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/README.md +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/package.json +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/src/browser.js +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/src/common.js +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/src/index.js +0 -0
- /package/node_modules/{debug → baileys/node_modules/debug}/src/node.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/LICENSE +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/README.md +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.esm.min.js.map +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/dist/eventemitter3.umd.min.js.map +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.d.ts +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.js +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/index.mjs +0 -0
- /package/node_modules/{eventemitter3 → baileys/node_modules/eventemitter3}/package.json +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/license +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/package.json +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/readme.md +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/asf.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/ebml.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/png.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/detectors/zip.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.d.ts +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/index.test-d.ts +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/parser.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/supported.js +0 -0
- /package/node_modules/{file-type → baileys/node_modules/file-type}/source/tokens.js +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/LICENSE +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/README.md +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.global.js +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.global.js.map +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.js +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/browser/index.js.map +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.cjs +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.d.cts +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.d.ts +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/dist/node/index.js +0 -0
- /package/node_modules/{hashery → baileys/node_modules/hashery}/package.json +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/LICENSE +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/README.md +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.global.js +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.global.js.map +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.js +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/browser/index.js.map +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.cjs +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.d.cts +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.d.ts +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/dist/node/index.js +0 -0
- /package/node_modules/{hookified → baileys/node_modules/hookified}/package.json +0 -0
- /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/LICENSE +0 -0
- /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/README.md +0 -0
- /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/index.d.ts +0 -0
- /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/index.js +0 -0
- /package/node_modules/{ieee754 → baileys/node_modules/ieee754}/package.json +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/LICENSE +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/README.md +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.cjs +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.d.cts +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.d.ts +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/dist/index.js +0 -0
- /package/node_modules/{keyv → baileys/node_modules/keyv}/package.json +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/LICENSE +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/README.md +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/index.d.ts +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/index.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/package.json +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/.eslintrc.json +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/WhisperTextProtocol.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/base_key_type.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/chain_type.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/crypto.d.ts +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/crypto.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/curve.d.ts +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/curve.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/errors.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/keyhelper.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/numeric_fingerprint.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/protobufs.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/protocol_address.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/queue_job.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_builder.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_cipher.js +0 -0
- /package/node_modules/{libsignal → baileys/node_modules/libsignal}/src/session_record.js +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/LICENSE +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/README.md +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/index.d.ts +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/index.js +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/package.json +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/types.d.ts +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/umd/index.d.ts +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/umd/index.js +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/umd/package.json +0 -0
- /package/node_modules/{long → baileys/node_modules/long}/umd/types.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/LICENSE.md +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/README.md +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel-browser.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel-browser.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/browser/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel-cjs.cjs.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel-cjs.d.cts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel-node.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel-node.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/node/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/package.json +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/commonjs/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel-browser.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel-browser.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/browser/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel-esm.d.mts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel-esm.mjs.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel-node.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel-node.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/diagnostics-channel.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.min.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/index.min.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/node/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/package.json +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.d.ts +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.d.ts.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.js +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/dist/esm/perf.js.map +0 -0
- /package/node_modules/{lru-cache → baileys/node_modules/lru-cache}/package.json +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/LICENSE +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/README.md +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.d.ts +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.js +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/dist/index.js.map +0 -0
- /package/node_modules/{media-typer → baileys/node_modules/media-typer}/package.json +0 -0
- /package/node_modules/{ms → baileys/node_modules/ms}/index.js +0 -0
- /package/node_modules/{ms → baileys/node_modules/ms}/license.md +0 -0
- /package/node_modules/{ms → baileys/node_modules/ms}/package.json +0 -0
- /package/node_modules/{ms → baileys/node_modules/ms}/readme.md +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/LICENSE.txt +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/README.md +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParseError.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParseError.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParserFactory.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ParserFactory.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffTagMap.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffTagMap.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/aiff/AiffToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2TagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2TagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Token.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/APEv2Token.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/Apev2Loader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/apev2/Apev2Loader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfGuid.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfGuid.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfObject.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfObject.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfTagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfTagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfUtil.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/asf/AsfUtil.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/BasicParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/BasicParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CaseInsensitiveTagMap.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CaseInsensitiveTagMap.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CombinedTagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/CombinedTagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/FourCC.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/FourCC.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagTypes.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/GenericTagTypes.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/MetadataCollector.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/MetadataCollector.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/Util.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/common/Util.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/core.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/core.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsdiff/DsdiffToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfChunk.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfChunk.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/dsf/DsfParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/EbmlIterator.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/EbmlIterator.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/types.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ebml/types.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/flac/FlacToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1TagMap.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v1/ID3v1TagMap.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/AbstractID3Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/AbstractID3Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameHeader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameHeader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/FrameParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v22TagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v22TagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v24TagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v24TagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2ChapterToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2ChapterToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Token.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/id3v2/ID3v2Token.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/iff/index.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/iff/index.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/index.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/index.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lrc/LyricsParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lrc/LyricsParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lyrics3/Lyrics3.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/lyrics3/Lyrics3.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaDtd.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaDtd.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaTagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/MatroskaTagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/types.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/matroska/types.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Atom.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Atom.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/AtomToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/AtomToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4TagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/MP4TagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Mp4Loader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mp4/Mp4Loader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ExtendedLameHeader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ExtendedLameHeader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/MpegParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ReplayGainDataFormat.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/ReplayGainDataFormat.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/XingTag.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/mpeg/XingTag.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackConentError.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackConentError.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/MusepackParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/BitReader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/BitReader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/MpcSv7Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/MpcSv7Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/StreamVersion7.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv7/StreamVersion7.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/MpcSv8Parser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/MpcSv8Parser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/StreamVersion8.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/musepack/sv8/StreamVersion8.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/OggToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/flac/FlacStream.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/flac/FlacStream.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/Opus.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/Opus.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/OpusStream.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/opus/OpusStream.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/Speex.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/Speex.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/SpeexStream.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/speex/SpeexStream.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/Theora.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/Theora.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/TheoraStream.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/theora/TheoraStream.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/Vorbis.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/Vorbis.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisDecoder.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisDecoder.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisStream.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisStream.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisTagMapper.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/ogg/vorbis/VorbisTagMapper.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffChunk.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffChunk.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffInfoTagMap.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/riff/RiffInfoTagMap.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/type.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/type.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/BwfChunk.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/BwfChunk.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveChunk.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveChunk.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wav/WaveParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackLoader.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackLoader.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackParser.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackParser.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackToken.d.ts +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/lib/wavpack/WavPackToken.js +0 -0
- /package/node_modules/{music-metadata → baileys/node_modules/music-metadata}/package.json +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/.github/dependabot.yml +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/LICENSE +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/README.md +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/index.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/package.json +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/base.test.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/event-emitter-leak.test.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/beforeExit.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/close.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/gc-not-close.js +0 -0
- /package/node_modules/{on-exit-leak-free → baileys/node_modules/on-exit-leak-free}/test/fixtures/unregister.js +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/index.d.ts +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/lower-bound.d.ts +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/lower-bound.js +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/options.d.ts +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/options.js +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/priority-queue.d.ts +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/priority-queue.js +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/queue.d.ts +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/dist/queue.js +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/license +0 -0
- /package/node_modules/{p-queue → baileys/node_modules/p-queue}/readme.md +0 -0
- /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/index.d.ts +0 -0
- /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/index.js +0 -0
- /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/license +0 -0
- /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/package.json +0 -0
- /package/node_modules/{p-timeout → baileys/node_modules/p-timeout}/readme.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.eslintignore +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.eslintrc +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/dependabot.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/bench.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/lock-threads.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/publish-release.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.github/workflows/target-main.yml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.nojekyll +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.prettierignore +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/.taprc.yaml +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/CNAME +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/CONTRIBUTING.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/LICENSE +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/README.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/SECURITY.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/basic.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child-child.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child-creation.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/child.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/deep-object.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/formatters.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/custom-levels.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/just-pino-heavy.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/just-pino.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/parent-vs-child.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/internal/redact.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/long-string.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/multi-arg.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/multistream.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/object.bench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/generate-benchmark-doc.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/runbench.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/benchmarks/utils/wrap-log-level.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/bin.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/browser.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/build/sync-version.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/api.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/asynchronous.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/benchmarks.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/browser.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/bundling.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/child-loggers.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/diagnostics.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/ecosystem.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/help.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/lts.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/pretty.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/redaction.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/transports.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docs/web.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/docsify/sidebar.md +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/examples/basic.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/examples/transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/favicon-16x16.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/favicon-32x32.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/favicon.ico +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/file.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/inc-version.sh +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/index.html +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/caller.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/constants.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/deprecations.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/levels.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/meta.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/multistream.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/proto.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/redaction.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/symbols.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/time.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/tools.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/transport-stream.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/lib/worker.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/package.json +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pino-banner.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pino-logo-hire.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pino-tree.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pino.d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pino.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/pretty-demo.png +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/basic.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/broken-pipe.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-child.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-disabled.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-early-console-freeze.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-is-level-enabled.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-levels.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-serializers.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-timestamp.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser-transmit.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/browser.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/complex-objects.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/crlf.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/custom-levels.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/diagnostics.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/error.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/errorKey.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/escaping.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/esm.mjs +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/index.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/esm/named-exports.mjs +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/exit.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/basic.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/destination.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/broken-pipe/syncfalse.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/console-transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/crashing-transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/default-exit.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/destination-exit.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/index.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/14-files.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/2-files.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file1.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file10.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file11.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file12.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file13.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file14.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file2.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file3.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file4.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file5.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file6.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file7.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file8.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/eval/node_modules/file9.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/noop-transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/pretty/null-prototype.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/stdout-hack-protection.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-child.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-exit.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse-flush-exit.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syncfalse.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/syntax-error-esm.mjs +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport-with-transform.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/to-file-transport.mjs +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport/index.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport/package.json +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-immediately-with-async-dest.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-immediately.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-exit-on-ready.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-main.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-many-lines.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-string-stdout.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-transform.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-uses-pino-config.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-with-on-exit.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-worker-data.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-worker.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/transport-wrong-export-type.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/to-file-transport-with-transform.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/to-file-transport.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transpile.cjs +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-immediately-with-async-dest.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-immediately.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-exit-on-ready.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-main.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-string-stdout.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/fixtures/ts/transport-worker.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/formatters.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/helper.d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/helper.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/hooks.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/http.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/internals/version.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/is-level-enabled.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/jest/basic.spec.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/levels.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/metadata.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/mixin-merge-strategy.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/mixin.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/multistream.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/index.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/pkg.config.json +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/pkg/pkg.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/redact.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/serializers.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/sinon-child-logger.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/stdout-protection.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/syncfalse.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/timestamp-nano.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/timestamp.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/big.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/bundlers-support.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/caller.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.test.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/core.transpiled.test.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/crash.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/module-link.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/pipeline.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/repl.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/syncTrue.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/syncfalse.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/targets.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport/uses-pino-config.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/transport-stream.test.js +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-import.test-d.cts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-multistream.test-d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-top-export.test-d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-transport.test-d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino-type-only.test-d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino.test-d.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/test/types/pino.ts +0 -0
- /package/node_modules/{pino → baileys/node_modules/pino}/tsconfig.json +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.github/dependabot.yml +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/.husky/pre-commit +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/LICENSE +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/README.md +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/index.d.ts +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/index.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/package.json +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/base.test.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-async-iteration.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-on-data.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/transport-transform.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/fixtures/worker-pipeline.js +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/types/index.test-d.ts +0 -0
- /package/node_modules/{pino-abstract-transport → baileys/node_modules/pino-abstract-transport}/test/worker.test.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.editorconfig +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.github/dependabot.yml +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/LICENSE +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/Readme.md +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/eslint.config.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/index.d.ts +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/index.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-helpers.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-proto.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err-with-cause.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/err.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/req.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/lib/res.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/package.json +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/err-with-cause.test.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/err.test.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/req.test.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/res.test.js +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/test/types/index.test-d.ts +0 -0
- /package/node_modules/{pino-std-serializers → baileys/node_modules/pino-std-serializers}/tsconfig.json +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.gitattributes +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.github/dependabot.yml +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/LICENSE +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/README.md +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/benchmarks/warn.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/eslint.config.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/examples/example.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/index.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/package.json +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-interpolated-string.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-once-only.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-reset.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-set.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/emit-unlimited.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/index.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/issue-88.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/jest.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/no-warnings.test.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/test/promise.js +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/types/index.d.ts +0 -0
- /package/node_modules/{process-warning → baileys/node_modules/process-warning}/types/index.test-d.ts +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/LICENSE +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/debug/README.md +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/ext/debug/index.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/LICENSE +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/README.md +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/annotations.proto +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/api/http.proto +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/api.proto +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/source_context.proto +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/google/protobuf/type.proto +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/index.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/light.d.ts +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/light.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/minimal.d.ts +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/minimal.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/roots.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/rpc.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/types.js +0 -0
- /package/node_modules/{@protobufjs/float/index.d.ts → baileys/node_modules/protobufjs/src/util/float.d.ts} +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/fs.js +0 -0
- /package/node_modules/{protobufjs → baileys/node_modules/protobufjs}/src/util/patterns.js +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/LICENSE +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/README.md +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.cjs +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.d.cts +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.d.mts +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/dist/index.mjs +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/LICENSE +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/README.md +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.global.js +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.global.js.map +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.js +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/browser/index.js.map +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.cjs +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.d.cts +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.d.ts +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/dist/node/index.js +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/node_modules/hookified/package.json +0 -0
- /package/node_modules/{qified → baileys/node_modules/qified}/package.json +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/LICENSE +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/benchmark.js +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/index.js +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/package.json +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/readme.md +0 -0
- /package/node_modules/{quick-format-unescaped → baileys/node_modules/quick-format-unescaped}/test/index.js +0 -0
- /package/node_modules/{real-require → baileys/node_modules/real-require}/LICENSE.md +0 -0
- /package/node_modules/{real-require → baileys/node_modules/real-require}/README.md +0 -0
- /package/node_modules/{real-require → baileys/node_modules/real-require}/package.json +0 -0
- /package/node_modules/{real-require → baileys/node_modules/real-require}/src/index.js +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/LICENSE +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/package.json +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/wrapper.d.ts +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/esm/wrapper.js +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/index.d.ts +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/index.js +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/package.json +0 -0
- /package/node_modules/{safe-stable-stringify → baileys/node_modules/safe-stable-stringify}/readme.md +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/.eslintignore +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/.taprc +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/LICENSE +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/README.md +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/bench.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/check.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/example.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/fixtures/firehose.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/index.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/package.json +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/destroy.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/end.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/flush-sync.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/flush.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/fsync.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/helper.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/minlength.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/mode.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/periodicflush.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/reopen.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/retry.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/sync.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/test/write.test.js +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/types/index.d.ts +0 -0
- /package/node_modules/{sonic-boom → baileys/node_modules/sonic-boom}/types/tests/test.ts +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/LICENSE +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/README.md +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/bench.js +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/index.js +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/package.json +0 -0
- /package/node_modules/{split2 → baileys/node_modules/split2}/test.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/LICENSE.txt +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/README.md +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/AbstractTokenizer.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/AbstractTokenizer.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BlobTokenizer.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BlobTokenizer.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BufferTokenizer.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/BufferTokenizer.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/FileTokenizer.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/FileTokenizer.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/ReadStreamTokenizer.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/ReadStreamTokenizer.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/core.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/core.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/index.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/index.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/AbstractStreamReader.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/AbstractStreamReader.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Deferred.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Deferred.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Errors.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/Errors.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/StreamReader.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/StreamReader.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamByobReader.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamByobReader.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamDefaultReader.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamDefaultReader.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReader.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReader.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReaderFactory.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/WebStreamReaderFactory.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/index.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/stream/index.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/types.d.ts +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/lib/types.js +0 -0
- /package/node_modules/{strtok3 → baileys/node_modules/strtok3}/package.json +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.claude/settings.local.json +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.github/dependabot.yml +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.github/workflows/ci.yml +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.husky/pre-commit +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/.taprc +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/CLAUDE.md +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/LICENSE +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/README.md +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/bench.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/index.d.ts +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/index.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/indexes.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/wait.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/lib/worker.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/package.json +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/base.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/bench.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/bundlers.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/close-on-gc.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/commonjs-fallback.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/context.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/create-and-exit.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/custom-worker.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/dir with spaces/test-package.zip +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/emit-event.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/end.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/error.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/esm.test.mjs +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/event.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/exit.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/get-context.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/helper.d.ts +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/helper.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/indexes.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/message-without-code.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/multibyte-chars.test.mjs +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/never-drain.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/on-message.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/index.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/pkg.config.json +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/pkg/pkg.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/port.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/post-message.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/string-limit-2.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/string-limit.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/syntax-error.mjs +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/thread-management.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file-on-destroy.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file-on-final.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-file.mjs +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/to-next.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/transpiled.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts/to-file.ts +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts/transpile.sh +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts-commonjs-default-export.zip +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/ts.test.ts +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/uncaughtException.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/unhandledRejection.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/watch-mode.test.js +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/test/yarnrc.yml +0 -0
- /package/node_modules/{thread-stream → baileys/node_modules/thread-stream}/tsconfig.json +0 -0
- /package/node_modules/{token-types → baileys/node_modules/token-types}/LICENSE.txt +0 -0
- /package/node_modules/{token-types → baileys/node_modules/token-types}/README.md +0 -0
- /package/node_modules/{token-types → baileys/node_modules/token-types}/lib/index.d.ts +0 -0
- /package/node_modules/{token-types → baileys/node_modules/token-types}/lib/index.js +0 -0
- /package/node_modules/{token-types → baileys/node_modules/token-types}/package.json +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/CopyrightNotice.txt +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/LICENSE.txt +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/README.md +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/SECURITY.md +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/index.d.ts +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/index.js +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/modules/package.json +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/package.json +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.d.ts +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.html +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.js +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.es6.mjs +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.html +0 -0
- /package/node_modules/{tslib → baileys/node_modules/tslib}/tslib.js +0 -0
- /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/index.d.ts +0 -0
- /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/index.js +0 -0
- /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/license +0 -0
- /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/package.json +0 -0
- /package/node_modules/{uint8array-extras → baileys/node_modules/uint8array-extras}/readme.md +0 -0
- /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/README.md +0 -0
- /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/dist/index.d.ts +0 -0
- /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/dist/index.js +0 -0
- /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/package.json +0 -0
- /package/node_modules/{whatsapp-rust-bridge → baileys/node_modules/whatsapp-rust-bridge}/pkg/whatsapp_rust_bridge.d.ts +0 -0
- /package/node_modules/{win-guid → baileys/node_modules/win-guid}/LICENSE.txt +0 -0
- /package/node_modules/{win-guid → baileys/node_modules/win-guid}/README.md +0 -0
- /package/node_modules/{win-guid → baileys/node_modules/win-guid}/lib/guid.d.ts +0 -0
- /package/node_modules/{win-guid → baileys/node_modules/win-guid}/lib/guid.js +0 -0
- /package/node_modules/{win-guid → baileys/node_modules/win-guid}/package.json +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/LICENSE +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/README.md +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/browser.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/index.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/buffer-util.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/constants.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/event-target.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/extension.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/limiter.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/permessage-deflate.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/receiver.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/sender.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/stream.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/subprotocol.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/validation.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/websocket-server.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/lib/websocket.js +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/package.json +0 -0
- /package/node_modules/{ws → baileys/node_modules/ws}/wrapper.mjs +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as resolveWhatsAppAccount, s as resolveWhatsAppMediaMaxBytes } from "./accounts-CSqLvCY5.js";
|
|
2
|
-
import { a as normalizeWhatsAppOutboundPayload, c as prepareWhatsAppOutboundMedia, r as sendReactionWhatsApp, s as normalizeWhatsAppPayloadTextPreservingIndentation, u as resolveWhatsAppReactionLevel } from "./send-
|
|
2
|
+
import { a as normalizeWhatsAppOutboundPayload, c as prepareWhatsAppOutboundMedia, r as sendReactionWhatsApp, s as normalizeWhatsAppPayloadTextPreservingIndentation, u as resolveWhatsAppReactionLevel } from "./send-D37ddk22.js";
|
|
3
3
|
import { i as getWhatsAppRuntime } from "./runtime-BLlToOi6.js";
|
|
4
4
|
import { r as getWhatsAppConnectionController } from "./connection-controller-runtime-context-DG0tuYuw.js";
|
|
5
5
|
import { a as markdownToWhatsAppChunks, c as toWhatsappJid, l as toWhatsappJidWithLid, n as isSelfChatMode, o as resolveEquivalentWhatsAppDirectChatJids, r as jidToE164, s as resolveJidToE164 } from "./targets-runtime-TMk0lGuy.js";
|
|
@@ -12,7 +12,7 @@ import { a as waitForWaConnection, c as isWhatsAppSocketOperationTimeoutError, d
|
|
|
12
12
|
import { n as getStatusCode, t as formatError } from "./session-errors-JuazczrA.js";
|
|
13
13
|
import { t as BufferJSON } from "./session.runtime-Nsqaehbd.js";
|
|
14
14
|
import { c as requireWhatsAppInboundAdmission, i as resolveWhatsAppInboundPolicy, l as resolveWhatsAppGroupConversationId, o as buildDeprecatedFlatWhatsAppInboundAdmission, r as resolveWhatsAppCommandAuthorized, s as requireAdmittedWhatsAppInboundMessage, t as checkInboundAccessControl } from "./access-control-pZcxTmd5.js";
|
|
15
|
-
import { _ as extractMediaKind, a as mayContainWhatsAppOutboundMention, b as hasInboundUserContent, c as DisconnectReason, d as normalizeMessageContent, f as describeReplyContext, g as extractLocationData, h as extractExternalAdReplyContext, i as addWhatsAppOutboundMentionsToContent, l as downloadMediaMessage, m as extractContextInfo, n as listWhatsAppSendResultMessageIds, o as resolveWhatsAppOutboundMentions, p as extractContactContext, r as normalizeWhatsAppSendResult, s as addWhatsAppImagePreviewFields, t as createWebSendApi, u as isJidGroup, v as extractMentionedJids, x as resolveInboundMediaMimetype, y as extractText } from "./send-api-
|
|
15
|
+
import { _ as extractMediaKind, a as mayContainWhatsAppOutboundMention, b as hasInboundUserContent, c as DisconnectReason, d as normalizeMessageContent, f as describeReplyContext, g as extractLocationData, h as extractExternalAdReplyContext, i as addWhatsAppOutboundMentionsToContent, l as downloadMediaMessage, m as extractContextInfo, n as listWhatsAppSendResultMessageIds, o as resolveWhatsAppOutboundMentions, p as extractContactContext, r as normalizeWhatsAppSendResult, s as addWhatsAppImagePreviewFields, t as createWebSendApi, u as isJidGroup, v as extractMentionedJids, x as resolveInboundMediaMimetype, y as extractText } from "./send-api-7wk6eQyW.js";
|
|
16
16
|
import { c as computeBackoff, d as resolveReconnectPolicy, f as sleepWithAbort, l as newConnectionId, n as WHATSAPP_WATCHDOG_TIMEOUT_ERROR, r as WhatsAppConnectionController, s as DEFAULT_RECONNECT_POLICY, u as resolveHeartbeatSeconds } from "./connection-controller-BOB2MVKY.js";
|
|
17
17
|
import { n as maybeResolveWhatsAppApprovalReaction } from "./approval-reactions-Cu66aYdq.js";
|
|
18
18
|
import { t as maybeResolveWhatsAppQuestionReaction } from "./question-reactions-CRsnyoMK.js";
|
|
@@ -24,12 +24,12 @@ import { getChildLogger } from "openclaw/plugin-sdk/logging-core";
|
|
|
24
24
|
import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
|
|
25
25
|
import { createSubsystemLogger, defaultRuntime, formatDurationPrecise, getChildLogger as getChildLogger$1, logVerbose, logVerbose as logVerbose$1, registerUnhandledRejectionHandler, shouldLogVerbose, shouldLogVerbose as shouldLogVerbose$1, warn } from "openclaw/plugin-sdk/runtime-env";
|
|
26
26
|
import { registerChannelRuntimeContext } from "openclaw/plugin-sdk/channel-runtime-context";
|
|
27
|
-
import { bindIngressLifecycleToReplyOptions, createChannelIngressMonitor, createChannelMessageReplyPipeline, createMessageReceiptFromOutboundResults, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-outbound";
|
|
27
|
+
import { bindIngressLifecycleToReplyOptions, createChannelIngressMonitor, createChannelMessageReplyPipeline, createMessageReceiptFromOutboundResults, listMessageReceiptPlatformIds, resolveChannelMessageSourceReplyDeliveryMode, resolveChannelStreamingBlockEnabled } from "openclaw/plugin-sdk/channel-outbound";
|
|
28
28
|
import { getAgentScopedMediaLocalRoots } from "openclaw/plugin-sdk/media-runtime";
|
|
29
29
|
import { isReasoningReplyPayload, resolveSendableOutboundReplyParts, sendMediaWithLeadingCaption } from "openclaw/plugin-sdk/reply-payload";
|
|
30
30
|
import { truncateUtf16Safe } from "openclaw/plugin-sdk/text-utility-runtime";
|
|
31
31
|
import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
32
|
-
import { buildChannelInboundEventContext, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundEnvelope as formatInboundEnvelope$1, formatInboundMediaUnavailableText, formatLocationText, formatMediaPlaceholderText, hasVisibleInboundReplyDispatch, isChannelPartialDeliveryError, resolveInboundSessionEnvelopeContext, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound,
|
|
32
|
+
import { buildChannelInboundEventContext, createChannelPartialDeliveryError, filterChannelInboundQuoteContext, formatInboundEnvelope, formatInboundEnvelope as formatInboundEnvelope$1, formatInboundMediaUnavailableText, formatLocationText, formatMediaPlaceholderText, hasVisibleInboundReplyDispatch, isChannelPartialDeliveryError, resolveInboundSessionEnvelopeContext, resolveInboundSupplementalSenderAllowed, runChannelInboundEvent, shouldDebounceTextInbound, toInboundMediaFactsWithMetadata, toLocationContext } from "openclaw/plugin-sdk/channel-inbound";
|
|
33
33
|
import { DEFAULT_ACCOUNT_ID, DEFAULT_MAIN_KEY, buildAgentMainSessionKey, buildAgentSessionKey, buildGroupHistoryKey, deriveLastRoutePolicy, normalizeAccountId, normalizeAgentId, resolveAgentRoute, resolveInboundLastRouteSessionKey } from "openclaw/plugin-sdk/routing";
|
|
34
34
|
import { asDateTimestampMs, parseStrictFiniteNumber, resolveExpiresAtMsFromDurationMs } from "openclaw/plugin-sdk/number-runtime";
|
|
35
35
|
import { createHash } from "node:crypto";
|
|
@@ -42,8 +42,8 @@ import { createInboundDebouncer, resolveInboundDebounceMs } from "openclaw/plugi
|
|
|
42
42
|
import { drainPendingDeliveries } from "openclaw/plugin-sdk/delivery-queue-runtime";
|
|
43
43
|
import { DEFAULT_GROUP_HISTORY_LIMIT, buildHistoryContextFromEntries, buildInboundHistoryFromEntries, createChannelHistoryWindow } from "openclaw/plugin-sdk/reply-history";
|
|
44
44
|
import { enqueueSystemEvent } from "openclaw/plugin-sdk/system-event-runtime";
|
|
45
|
-
import { createDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
|
|
46
45
|
import { saveMediaStream } from "openclaw/plugin-sdk/media-store";
|
|
46
|
+
import { createDedupeCache } from "openclaw/plugin-sdk/dedupe-runtime";
|
|
47
47
|
import { getRuntimeConfig as getRuntimeConfig$1 } from "openclaw/plugin-sdk/runtime-config-snapshot";
|
|
48
48
|
import { resolveChannelContextVisibilityMode } from "openclaw/plugin-sdk/context-visibility-runtime";
|
|
49
49
|
import { buildMentionRegexes, implicitMentionKindWhen, normalizeMentionText, resolveInboundMentionDecision } from "openclaw/plugin-sdk/channel-mention-gating";
|
|
@@ -57,6 +57,33 @@ import { getGlobalHookRunner } from "openclaw/plugin-sdk/plugin-runtime";
|
|
|
57
57
|
import { resolveBatchedReplyThreadingPolicy } from "openclaw/plugin-sdk/reply-reference";
|
|
58
58
|
import { LocalMediaAccessError, getDefaultLocalRoots, loadWebMedia, loadWebMediaRaw, optimizeImageToJpeg, optimizeImageToPng } from "openclaw/plugin-sdk/web-media";
|
|
59
59
|
import { createChannelApiRetryRunner } from "openclaw/plugin-sdk/retry-runtime";
|
|
60
|
+
//#region extensions/whatsapp/src/inbound/baileys-cache.ts
|
|
61
|
+
const WHATSAPP_BAILEYS_CACHE_MAX_ENTRIES = 500;
|
|
62
|
+
function rememberWhatsAppBaileysCacheEntry(cache, key, value, ttlMs) {
|
|
63
|
+
if (!cache) return;
|
|
64
|
+
if (cache.has(key)) cache.delete(key);
|
|
65
|
+
cache.set(key, {
|
|
66
|
+
expiresAt: Date.now() + ttlMs,
|
|
67
|
+
value
|
|
68
|
+
});
|
|
69
|
+
while (cache.size > WHATSAPP_BAILEYS_CACHE_MAX_ENTRIES) {
|
|
70
|
+
const oldest = cache.keys().next();
|
|
71
|
+
if (oldest.done) break;
|
|
72
|
+
cache.delete(oldest.value);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function readWhatsAppBaileysCacheEntry(cache, key) {
|
|
76
|
+
const entry = cache.get(key);
|
|
77
|
+
if (!entry) return;
|
|
78
|
+
if (entry.expiresAt <= Date.now()) {
|
|
79
|
+
cache.delete(key);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
cache.delete(key);
|
|
83
|
+
cache.set(key, entry);
|
|
84
|
+
return entry.value;
|
|
85
|
+
}
|
|
86
|
+
//#endregion
|
|
60
87
|
//#region extensions/whatsapp/src/inbound/message-aliases.ts
|
|
61
88
|
function normalizeQuoteSender(sender) {
|
|
62
89
|
if (!sender?.displayName && !sender?.jid && !sender?.e164) return;
|
|
@@ -174,9 +201,12 @@ function defineDeprecatedAdmissionTopLevelAccessors(msg) {
|
|
|
174
201
|
}
|
|
175
202
|
},
|
|
176
203
|
accessControlPassed: {
|
|
177
|
-
get: () =>
|
|
204
|
+
get: () => {
|
|
205
|
+
if (msg.admission?.ingress.decisiveGateId === "legacy-flat-compat") return fallbackAccessControlPassed;
|
|
206
|
+
return msg.admission ? msg.admission.ingress.decision === "allow" : fallbackAccessControlPassed;
|
|
207
|
+
},
|
|
178
208
|
set: (value) => {
|
|
179
|
-
fallbackAccessControlPassed = value;
|
|
209
|
+
if (!msg.admission) fallbackAccessControlPassed = value;
|
|
180
210
|
}
|
|
181
211
|
},
|
|
182
212
|
chatType: {
|
|
@@ -397,31 +427,8 @@ function normalizeWebInboundMessage(msg) {
|
|
|
397
427
|
if (msg.event || msg.payload || msg.platform || msg.quote || msg.group) throw new Error("WhatsApp inbound messages must be either legacy flat or canonical nested; partial nested contexts are not supported.");
|
|
398
428
|
return normalizeLegacyFlatWebInboundMessage(msg);
|
|
399
429
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
const recentOutboundMessages = createDedupeCache({
|
|
403
|
-
ttlMs: 20 * 6e4,
|
|
404
|
-
maxSize: 5e3
|
|
405
|
-
});
|
|
406
|
-
function buildMessageKey(params) {
|
|
407
|
-
const accountId = params.accountId.trim();
|
|
408
|
-
const remoteJid = params.remoteJid.trim();
|
|
409
|
-
const messageId = params.messageId.trim();
|
|
410
|
-
if (!accountId || !remoteJid || !messageId || messageId === "unknown") return null;
|
|
411
|
-
return `${accountId}:${remoteJid}:${messageId}`;
|
|
412
|
-
}
|
|
413
|
-
function resetWebInboundDedupe() {
|
|
414
|
-
recentOutboundMessages.clear();
|
|
415
|
-
}
|
|
416
|
-
function rememberRecentOutboundMessage(params) {
|
|
417
|
-
const key = buildMessageKey(params);
|
|
418
|
-
if (!key) return;
|
|
419
|
-
recentOutboundMessages.check(key);
|
|
420
|
-
}
|
|
421
|
-
function isRecentOutboundMessage(params) {
|
|
422
|
-
const key = buildMessageKey(params);
|
|
423
|
-
if (!key) return false;
|
|
424
|
-
return recentOutboundMessages.peek(key);
|
|
430
|
+
function normalizeAdmittedWebInboundMessage(msg) {
|
|
431
|
+
return requireAdmittedWhatsAppInboundMessage(normalizeWebInboundMessage(msg));
|
|
425
432
|
}
|
|
426
433
|
//#endregion
|
|
427
434
|
//#region extensions/whatsapp/src/inbound/durable-payload.ts
|
|
@@ -453,11 +460,6 @@ function deserializeWhatsAppDurableInboundMessage(message) {
|
|
|
453
460
|
}
|
|
454
461
|
//#endregion
|
|
455
462
|
//#region extensions/whatsapp/src/inbound/durable-receive.ts
|
|
456
|
-
const WHATSAPP_DURABLE_INBOUND_PENDING_MAX_ENTRIES = 450;
|
|
457
|
-
const WHATSAPP_DURABLE_INBOUND_COMPLETED_MAX_ENTRIES = 5e3;
|
|
458
|
-
const WHATSAPP_DURABLE_INBOUND_PENDING_TTL_MS = 720 * 60 * 60 * 1e3;
|
|
459
|
-
const WHATSAPP_DURABLE_INBOUND_COMPLETED_TTL_MS = 10080 * 60 * 1e3;
|
|
460
|
-
const WHATSAPP_DURABLE_INBOUND_PRUNE_INTERVAL_MS = 3600 * 1e3;
|
|
461
463
|
const WHATSAPP_DURABLE_INBOUND_PAYLOAD_VERSION = 1;
|
|
462
464
|
function hashNamespacePart(value) {
|
|
463
465
|
return createHash("sha256").update(value).digest("hex").slice(0, 24);
|
|
@@ -516,13 +518,9 @@ function createWhatsAppIngressMonitor(params) {
|
|
|
516
518
|
deliver: (admission, lifecycle) => params.dispatch(admission, lifecycle),
|
|
517
519
|
pollIntervalMs: params.pollIntervalMs,
|
|
518
520
|
retention: {
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
completedTtlMs: WHATSAPP_DURABLE_INBOUND_COMPLETED_TTL_MS,
|
|
523
|
-
completedMaxEntries: WHATSAPP_DURABLE_INBOUND_COMPLETED_MAX_ENTRIES,
|
|
524
|
-
failedTtlMs: WHATSAPP_DURABLE_INBOUND_PENDING_TTL_MS,
|
|
525
|
-
failedMaxEntries: WHATSAPP_DURABLE_INBOUND_PENDING_MAX_ENTRIES
|
|
521
|
+
completedTtlMs: 10080 * 60 * 1e3,
|
|
522
|
+
completedMaxEntries: 5e3,
|
|
523
|
+
failedMaxEntries: 450
|
|
526
524
|
},
|
|
527
525
|
drain: {
|
|
528
526
|
resolveNonRetryableFailure: resolveWhatsAppIngressNonRetryableFailure,
|
|
@@ -543,14 +541,190 @@ function createWhatsAppIngressMonitor(params) {
|
|
|
543
541
|
});
|
|
544
542
|
}
|
|
545
543
|
//#endregion
|
|
546
|
-
//#region extensions/whatsapp/src/inbound/
|
|
547
|
-
const
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
544
|
+
//#region extensions/whatsapp/src/inbound/group-metadata-cache.ts
|
|
545
|
+
const GROUP_META_TTL_MS = 300 * 1e3;
|
|
546
|
+
const WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES = 500;
|
|
547
|
+
function resolveGroupMetadataExpiresAt(nowRaw = Date.now()) {
|
|
548
|
+
const now = asDateTimestampMs(nowRaw);
|
|
549
|
+
return now === void 0 ? void 0 : resolveExpiresAtMsFromDurationMs(GROUP_META_TTL_MS, { nowMs: now });
|
|
551
550
|
}
|
|
552
|
-
function
|
|
553
|
-
|
|
551
|
+
function rememberGroupMetadataCacheEntry(cache, jid, entry) {
|
|
552
|
+
if (asDateTimestampMs(entry.expires) === void 0) {
|
|
553
|
+
cache.delete(jid);
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
556
|
+
if (cache.has(jid)) cache.delete(jid);
|
|
557
|
+
cache.set(jid, entry);
|
|
558
|
+
while (cache.size > WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES) {
|
|
559
|
+
const oldest = cache.keys().next();
|
|
560
|
+
if (oldest.done) break;
|
|
561
|
+
cache.delete(oldest.value);
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
function readGroupMetadataCacheEntry(cache, jid) {
|
|
565
|
+
const entry = cache.get(jid);
|
|
566
|
+
if (!entry) return null;
|
|
567
|
+
const now = asDateTimestampMs(Date.now());
|
|
568
|
+
const expires = asDateTimestampMs(entry.expires);
|
|
569
|
+
if (now === void 0 || expires === void 0 || expires <= now) {
|
|
570
|
+
cache.delete(jid);
|
|
571
|
+
return null;
|
|
572
|
+
}
|
|
573
|
+
cache.delete(jid);
|
|
574
|
+
cache.set(jid, entry);
|
|
575
|
+
return entry;
|
|
576
|
+
}
|
|
577
|
+
function createWhatsAppGroupMetadataCacheOwner(params) {
|
|
578
|
+
const reconnectCache = params.reconnectCache ?? /* @__PURE__ */ new Map();
|
|
579
|
+
const localCache = /* @__PURE__ */ new Map();
|
|
580
|
+
const publishedJids = /* @__PURE__ */ new Set();
|
|
581
|
+
const invalidatedJids = /* @__PURE__ */ new Set();
|
|
582
|
+
const detachListeners = [];
|
|
583
|
+
let closed = false;
|
|
584
|
+
let started = false;
|
|
585
|
+
const summarize = async (meta) => {
|
|
586
|
+
const participantEntries = await Promise.all(meta.participants?.map(async (participant) => {
|
|
587
|
+
const mapped = await params.resolveInboundJid(participant.id);
|
|
588
|
+
return {
|
|
589
|
+
display: mapped ?? participant.id,
|
|
590
|
+
mention: {
|
|
591
|
+
id: participant.id,
|
|
592
|
+
lid: participant.lid,
|
|
593
|
+
phoneNumber: participant.phoneNumber,
|
|
594
|
+
e164: mapped
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
}) ?? []);
|
|
598
|
+
return {
|
|
599
|
+
subject: meta.subject,
|
|
600
|
+
participants: participantEntries.map((entry) => entry.display).filter(Boolean),
|
|
601
|
+
mentionParticipants: participantEntries.map((entry) => entry.mention),
|
|
602
|
+
expires: resolveGroupMetadataExpiresAt() ?? 0
|
|
603
|
+
};
|
|
604
|
+
};
|
|
605
|
+
const summarizeForReconnect = (meta) => ({
|
|
606
|
+
subject: meta.subject,
|
|
607
|
+
expires: resolveGroupMetadataExpiresAt() ?? NaN
|
|
608
|
+
});
|
|
609
|
+
const rememberFullUpdate = (jid, meta) => {
|
|
610
|
+
if (closed) return;
|
|
611
|
+
rememberWhatsAppBaileysCacheEntry(params.baileysCache, jid, meta, GROUP_META_TTL_MS);
|
|
612
|
+
publishedJids.add(jid);
|
|
613
|
+
invalidatedJids.delete(jid);
|
|
614
|
+
rememberGroupMetadataCacheEntry(reconnectCache, jid, summarizeForReconnect(meta));
|
|
615
|
+
localCache.delete(jid);
|
|
616
|
+
};
|
|
617
|
+
const forgetFullMetadata = (jid) => {
|
|
618
|
+
params.baileysCache?.delete(jid);
|
|
619
|
+
reconnectCache.delete(jid);
|
|
620
|
+
localCache.delete(jid);
|
|
621
|
+
publishedJids.delete(jid);
|
|
622
|
+
invalidatedJids.add(jid);
|
|
623
|
+
};
|
|
624
|
+
const get = async (jid) => {
|
|
625
|
+
const cached = readGroupMetadataCacheEntry(localCache, jid);
|
|
626
|
+
if (cached) return cached;
|
|
627
|
+
try {
|
|
628
|
+
const meta = await (params.getCurrentSock() ?? params.sock).groupMetadata(jid);
|
|
629
|
+
rememberWhatsAppBaileysCacheEntry(params.baileysCache, jid, meta, GROUP_META_TTL_MS);
|
|
630
|
+
publishedJids.add(jid);
|
|
631
|
+
const entry = await summarize(meta);
|
|
632
|
+
rememberGroupMetadataCacheEntry(reconnectCache, jid, {
|
|
633
|
+
subject: entry.subject,
|
|
634
|
+
expires: entry.expires
|
|
635
|
+
});
|
|
636
|
+
rememberGroupMetadataCacheEntry(localCache, jid, entry);
|
|
637
|
+
return entry;
|
|
638
|
+
} catch (error) {
|
|
639
|
+
const hydrated = readGroupMetadataCacheEntry(reconnectCache, jid);
|
|
640
|
+
if (hydrated) {
|
|
641
|
+
rememberGroupMetadataCacheEntry(localCache, jid, hydrated);
|
|
642
|
+
params.logVerbose(`Using cached group metadata for ${jid} after fetch failure: ${String(error)}`);
|
|
643
|
+
return hydrated;
|
|
644
|
+
}
|
|
645
|
+
params.logVerbose(`Failed to fetch group metadata for ${jid}: ${String(error)}`);
|
|
646
|
+
return { expires: resolveGroupMetadataExpiresAt() ?? 0 };
|
|
647
|
+
}
|
|
648
|
+
};
|
|
649
|
+
const resolveOutboundMentions = async (jid, text) => {
|
|
650
|
+
if (isJidGroup(jid) !== true || !mayContainWhatsAppOutboundMention(text)) return {
|
|
651
|
+
text,
|
|
652
|
+
mentionedJids: []
|
|
653
|
+
};
|
|
654
|
+
return resolveWhatsAppOutboundMentions({
|
|
655
|
+
chatJid: jid,
|
|
656
|
+
text,
|
|
657
|
+
participants: (await get(jid)).mentionParticipants
|
|
658
|
+
});
|
|
659
|
+
};
|
|
660
|
+
const applyOutboundMentions = async (jid, content) => {
|
|
661
|
+
if ("text" in content && typeof content.text === "string") {
|
|
662
|
+
const resolved = await resolveOutboundMentions(jid, content.text);
|
|
663
|
+
return addWhatsAppOutboundMentionsToContent({
|
|
664
|
+
...content,
|
|
665
|
+
text: resolved.text
|
|
666
|
+
}, resolved.mentionedJids);
|
|
667
|
+
}
|
|
668
|
+
const caption = content.caption;
|
|
669
|
+
if (typeof caption === "string") {
|
|
670
|
+
const resolved = await resolveOutboundMentions(jid, caption);
|
|
671
|
+
return addWhatsAppOutboundMentionsToContent({
|
|
672
|
+
...content,
|
|
673
|
+
caption: resolved.text
|
|
674
|
+
}, resolved.mentionedJids);
|
|
675
|
+
}
|
|
676
|
+
return content;
|
|
677
|
+
};
|
|
678
|
+
const start = () => {
|
|
679
|
+
if (started || closed) return;
|
|
680
|
+
started = true;
|
|
681
|
+
const listen = (event, listener) => {
|
|
682
|
+
detachListeners.push(params.listen(event, listener));
|
|
683
|
+
};
|
|
684
|
+
listen("groups.upsert", ((groups) => {
|
|
685
|
+
for (const group of groups) if (group.id) rememberFullUpdate(group.id, group);
|
|
686
|
+
}));
|
|
687
|
+
listen("groups.update", ((updates) => {
|
|
688
|
+
for (const update of updates) {
|
|
689
|
+
if (!update.id) continue;
|
|
690
|
+
if (typeof update.subject === "string" && Array.isArray(update.participants)) {
|
|
691
|
+
rememberFullUpdate(update.id, update);
|
|
692
|
+
continue;
|
|
693
|
+
}
|
|
694
|
+
forgetFullMetadata(update.id);
|
|
695
|
+
}
|
|
696
|
+
}));
|
|
697
|
+
listen("group-participants.update", ((update) => {
|
|
698
|
+
forgetFullMetadata(update.id);
|
|
699
|
+
}));
|
|
700
|
+
(async () => {
|
|
701
|
+
try {
|
|
702
|
+
const groups = await params.sock.groupFetchAllParticipating();
|
|
703
|
+
if (closed) return;
|
|
704
|
+
for (const [jid, meta] of Object.entries(groups ?? {})) if (meta && !publishedJids.has(jid) && !invalidatedJids.has(jid)) {
|
|
705
|
+
rememberGroupMetadataCacheEntry(reconnectCache, jid, summarizeForReconnect(meta));
|
|
706
|
+
rememberWhatsAppBaileysCacheEntry(params.baileysCache, jid, meta, GROUP_META_TTL_MS);
|
|
707
|
+
publishedJids.add(jid);
|
|
708
|
+
}
|
|
709
|
+
params.logVerbose(`Hydrated ${Object.keys(groups ?? {}).length} participating groups on connect`);
|
|
710
|
+
} catch (error) {
|
|
711
|
+
const formatted = String(error);
|
|
712
|
+
params.logHydrationWarning(formatted);
|
|
713
|
+
params.logVerbose(`Failed to hydrate participating groups on connect: ${formatted}`);
|
|
714
|
+
}
|
|
715
|
+
})();
|
|
716
|
+
};
|
|
717
|
+
const close = () => {
|
|
718
|
+
closed = true;
|
|
719
|
+
for (const detach of detachListeners.splice(0)) detach();
|
|
720
|
+
};
|
|
721
|
+
return {
|
|
722
|
+
start,
|
|
723
|
+
close,
|
|
724
|
+
get,
|
|
725
|
+
resolveOutboundMentions,
|
|
726
|
+
applyOutboundMentions
|
|
727
|
+
};
|
|
554
728
|
}
|
|
555
729
|
//#endregion
|
|
556
730
|
//#region extensions/whatsapp/src/inbound/lifecycle.ts
|
|
@@ -572,6 +746,157 @@ function closeInboundMonitorSocket(sock) {
|
|
|
572
746
|
sock.ws?.close?.();
|
|
573
747
|
}
|
|
574
748
|
//#endregion
|
|
749
|
+
//#region extensions/whatsapp/src/inbound/ingress-lifecycle.ts
|
|
750
|
+
const ingressLifecycleKey = Symbol("whatsappIngressLifecycle");
|
|
751
|
+
function attachWhatsAppIngressLifecycle(message, lifecycle) {
|
|
752
|
+
if (lifecycle) message[ingressLifecycleKey] = lifecycle;
|
|
753
|
+
return message;
|
|
754
|
+
}
|
|
755
|
+
function resolveWhatsAppIngressLifecycle(message) {
|
|
756
|
+
return message[ingressLifecycleKey];
|
|
757
|
+
}
|
|
758
|
+
//#endregion
|
|
759
|
+
//#region extensions/whatsapp/src/inbound/message-debounce.ts
|
|
760
|
+
function createWhatsAppInboundMessageDebouncer(options) {
|
|
761
|
+
const debounceMs = Math.max(0, Math.trunc(options.debounceMs ?? 0));
|
|
762
|
+
const pendingKeys = /* @__PURE__ */ new Map();
|
|
763
|
+
const activeFlushes = /* @__PURE__ */ new Set();
|
|
764
|
+
const workWaiters = /* @__PURE__ */ new Set();
|
|
765
|
+
const notifyWork = () => {
|
|
766
|
+
const waiters = [...workWaiters];
|
|
767
|
+
workWaiters.clear();
|
|
768
|
+
for (const resolve of waiters) resolve();
|
|
769
|
+
};
|
|
770
|
+
const buildKey = (msg) => {
|
|
771
|
+
const admission = requireWhatsAppInboundAdmission(msg);
|
|
772
|
+
const sender = msg.platform.sender;
|
|
773
|
+
const senderKey = admission.conversation.kind === "group" ? getPrimaryIdentityId(sender ?? null) ?? msg.platform.senderJid ?? msg.platform.senderE164 ?? msg.platform.senderName ?? admission.sender.id : admission.conversation.id;
|
|
774
|
+
return senderKey ? `${admission.accountId}:${admission.conversation.id}:${senderKey}` : null;
|
|
775
|
+
};
|
|
776
|
+
const shouldDebounce = (msg) => options.shouldDebounce?.(msg) ?? true;
|
|
777
|
+
const trackKey = (key) => {
|
|
778
|
+
pendingKeys.set(key, (pendingKeys.get(key) ?? 0) + 1);
|
|
779
|
+
};
|
|
780
|
+
const releaseKey = (entry) => {
|
|
781
|
+
if (!entry.debounceKey || entry.debounceKeyTracked !== true) return;
|
|
782
|
+
const remaining = (pendingKeys.get(entry.debounceKey) ?? 0) - 1;
|
|
783
|
+
if (remaining > 0) pendingKeys.set(entry.debounceKey, remaining);
|
|
784
|
+
else pendingKeys.delete(entry.debounceKey);
|
|
785
|
+
};
|
|
786
|
+
const orderEntries = (entries) => entries.toSorted((a, b) => {
|
|
787
|
+
const timestampDiff = (a.event.timestamp ?? 0) - (b.event.timestamp ?? 0);
|
|
788
|
+
return timestampDiff !== 0 ? timestampDiff : (a.receiveOrder ?? 0) - (b.receiveOrder ?? 0);
|
|
789
|
+
});
|
|
790
|
+
const debouncer = createInboundDebouncer({
|
|
791
|
+
debounceMs,
|
|
792
|
+
buildKey: (msg) => msg.debounceKey ?? buildKey(msg),
|
|
793
|
+
shouldDebounce,
|
|
794
|
+
onFlush: (entries, createFlush) => {
|
|
795
|
+
for (const entry of entries) releaseKey(entry);
|
|
796
|
+
const orderedEntries = orderEntries(entries);
|
|
797
|
+
const { lifecycle, settle, abandon } = fanInChannelIngressLifecycles(orderedEntries.map((entry) => entry.turnAdoptionLifecycle));
|
|
798
|
+
const flush = createFlush({
|
|
799
|
+
lifecycle,
|
|
800
|
+
dispatch: async (admissionLifecycle) => {
|
|
801
|
+
const last = orderedEntries.at(-1);
|
|
802
|
+
if (!last) return;
|
|
803
|
+
try {
|
|
804
|
+
if (orderedEntries.length === 1) {
|
|
805
|
+
await options.onMessage(attachWhatsAppIngressLifecycle(last, admissionLifecycle));
|
|
806
|
+
await settle();
|
|
807
|
+
await Promise.all(orderedEntries.map((entry) => options.markRead(entry.readReceipt)));
|
|
808
|
+
return;
|
|
809
|
+
}
|
|
810
|
+
const mentioned = /* @__PURE__ */ new Set();
|
|
811
|
+
for (const entry of orderedEntries) for (const jid of entry.group?.mentions?.jids ?? []) mentioned.add(jid);
|
|
812
|
+
const combinedBody = orderedEntries.map((entry) => entry.payload.body).filter(Boolean).join("\n");
|
|
813
|
+
const combinedCommandBody = orderedEntries.map((entry) => entry.payload.commandBody ?? entry.payload.body).filter(Boolean).join("\n");
|
|
814
|
+
const combinedMentions = mentioned.size > 0 ? {
|
|
815
|
+
...last.group?.mentions,
|
|
816
|
+
jids: Array.from(mentioned)
|
|
817
|
+
} : last.group?.mentions;
|
|
818
|
+
const combinedGroup = last.group || combinedMentions ? {
|
|
819
|
+
...last.group,
|
|
820
|
+
mentions: combinedMentions
|
|
821
|
+
} : void 0;
|
|
822
|
+
const combinedMessage = attachWhatsAppIngressLifecycle(withDeprecatedWebInboundMessageFlatAliases({
|
|
823
|
+
...last,
|
|
824
|
+
turnAdoptionLifecycle: admissionLifecycle,
|
|
825
|
+
payload: {
|
|
826
|
+
...last.payload,
|
|
827
|
+
body: combinedBody,
|
|
828
|
+
commandBody: combinedCommandBody
|
|
829
|
+
},
|
|
830
|
+
group: combinedGroup,
|
|
831
|
+
event: {
|
|
832
|
+
...last.event,
|
|
833
|
+
isBatched: true
|
|
834
|
+
}
|
|
835
|
+
}), admissionLifecycle);
|
|
836
|
+
await options.onMessage(combinedMessage);
|
|
837
|
+
await settle();
|
|
838
|
+
await Promise.all(orderedEntries.map((entry) => options.markRead(entry.readReceipt)));
|
|
839
|
+
} catch (error) {
|
|
840
|
+
await abandon();
|
|
841
|
+
throw error;
|
|
842
|
+
}
|
|
843
|
+
}
|
|
844
|
+
});
|
|
845
|
+
activeFlushes.add(flush.completion);
|
|
846
|
+
options.onPendingWorkChanged();
|
|
847
|
+
notifyWork();
|
|
848
|
+
const cleanup = () => {
|
|
849
|
+
activeFlushes.delete(flush.completion);
|
|
850
|
+
options.onPendingWorkChanged();
|
|
851
|
+
};
|
|
852
|
+
flush.completion.then(cleanup, cleanup);
|
|
853
|
+
return flush;
|
|
854
|
+
},
|
|
855
|
+
onError: options.onError
|
|
856
|
+
});
|
|
857
|
+
const enqueue = async (message) => {
|
|
858
|
+
const key = buildKey(message);
|
|
859
|
+
if (key) {
|
|
860
|
+
message.debounceKey = key;
|
|
861
|
+
if (debounceMs > 0 && shouldDebounce(message)) {
|
|
862
|
+
message.debounceKeyTracked = true;
|
|
863
|
+
trackKey(key);
|
|
864
|
+
options.onPendingWorkChanged();
|
|
865
|
+
notifyWork();
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
await debouncer.enqueue(message);
|
|
869
|
+
};
|
|
870
|
+
const hasPendingWork = () => pendingKeys.size > 0 || activeFlushes.size > 0;
|
|
871
|
+
const pendingWorkCount = () => pendingKeys.size + activeFlushes.size;
|
|
872
|
+
const waitForWorkOrIdle = (handlers, handlersIdle) => {
|
|
873
|
+
if (hasPendingWork() || handlersIdle) return Promise.resolve();
|
|
874
|
+
return new Promise((resolve) => {
|
|
875
|
+
const finish = () => {
|
|
876
|
+
workWaiters.delete(finish);
|
|
877
|
+
resolve();
|
|
878
|
+
};
|
|
879
|
+
workWaiters.add(finish);
|
|
880
|
+
Promise.allSettled(handlers).then(finish);
|
|
881
|
+
});
|
|
882
|
+
};
|
|
883
|
+
const drain = async () => {
|
|
884
|
+
while (hasPendingWork()) {
|
|
885
|
+
const keys = Array.from(pendingKeys.keys());
|
|
886
|
+
if (keys.length > 0) await Promise.all(keys.map((key) => debouncer.flushKey(key)));
|
|
887
|
+
await debouncer.drain();
|
|
888
|
+
await Promise.resolve();
|
|
889
|
+
}
|
|
890
|
+
};
|
|
891
|
+
return {
|
|
892
|
+
enqueue,
|
|
893
|
+
drain,
|
|
894
|
+
hasPendingWork,
|
|
895
|
+
pendingWorkCount,
|
|
896
|
+
waitForWorkOrIdle
|
|
897
|
+
};
|
|
898
|
+
}
|
|
899
|
+
//#endregion
|
|
575
900
|
//#region extensions/whatsapp/src/inbound/media.ts
|
|
576
901
|
var WhatsAppInboundMediaLimitExceededError = class extends Error {
|
|
577
902
|
constructor(maxBytes) {
|
|
@@ -616,455 +941,98 @@ async function downloadQuotedInboundMedia(msg, sock, maxBytes = 50 * 1024 * 1024
|
|
|
616
941
|
}, sock, maxBytes);
|
|
617
942
|
}
|
|
618
943
|
//#endregion
|
|
619
|
-
//#region extensions/whatsapp/src/inbound/
|
|
620
|
-
|
|
621
|
-
const
|
|
622
|
-
const
|
|
623
|
-
const
|
|
624
|
-
const
|
|
625
|
-
const
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
944
|
+
//#region extensions/whatsapp/src/inbound/message-enrichment.ts
|
|
945
|
+
async function enrichWhatsAppInboundMessage(params) {
|
|
946
|
+
const { msg, sock } = params;
|
|
947
|
+
const location = extractLocationData(msg.message ?? void 0);
|
|
948
|
+
const locationText = location ? formatLocationText(location) : void 0;
|
|
949
|
+
const contactContext = extractContactContext(msg.message ?? void 0);
|
|
950
|
+
const externalAdReplyContext = extractExternalAdReplyContext(msg.message ?? void 0);
|
|
951
|
+
let mediaKind = extractMediaKind(msg.message ?? void 0);
|
|
952
|
+
let body = extractText(msg.message ?? void 0);
|
|
953
|
+
if (locationText) body = [body, locationText].filter(Boolean).join("\n").trim();
|
|
954
|
+
if (!body && !mediaKind) return null;
|
|
955
|
+
body = body ?? "";
|
|
956
|
+
const commandBody = body;
|
|
957
|
+
const replyContext = describeReplyContext(msg.message);
|
|
958
|
+
let mediaPath;
|
|
959
|
+
let mediaType = mediaKind ? resolveInboundMediaMimetype(msg.message) : void 0;
|
|
960
|
+
const nativeMedia = mediaKind ? {
|
|
961
|
+
contentType: mediaType,
|
|
962
|
+
kind: mediaKind
|
|
963
|
+
} : void 0;
|
|
964
|
+
let mediaFileName;
|
|
965
|
+
const maxBytes = (typeof params.mediaMaxMb === "number" && params.mediaMaxMb > 0 ? params.mediaMaxMb : 50) * 1024 * 1024;
|
|
966
|
+
const saveInboundMedia = async (inboundMedia) => {
|
|
967
|
+
if (!inboundMedia) return;
|
|
968
|
+
mediaPath = inboundMedia.saved.path;
|
|
969
|
+
mediaType = inboundMedia.mimetype;
|
|
970
|
+
mediaFileName = inboundMedia.fileName;
|
|
971
|
+
};
|
|
972
|
+
try {
|
|
973
|
+
await saveInboundMedia(await downloadInboundMedia(msg, sock, maxBytes));
|
|
974
|
+
} catch (error) {
|
|
975
|
+
params.logVerbose(`Inbound media download failed: ${String(error)}`);
|
|
976
|
+
body = formatInboundMediaUnavailableText({
|
|
977
|
+
body,
|
|
978
|
+
notice: "[whatsapp attachment unavailable]"
|
|
979
|
+
});
|
|
641
980
|
}
|
|
642
|
-
if (
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
981
|
+
if (!mediaPath && !mediaKind && replyContext?.media) try {
|
|
982
|
+
await saveInboundMedia(await downloadQuotedInboundMedia(msg, sock, maxBytes));
|
|
983
|
+
mediaKind = replyContext.media.kind ?? void 0;
|
|
984
|
+
mediaType = mediaType ?? replyContext.media.contentType ?? void 0;
|
|
985
|
+
} catch (error) {
|
|
986
|
+
params.logVerbose(`Quoted media download failed: ${String(error)}`);
|
|
987
|
+
body = formatInboundMediaUnavailableText({
|
|
988
|
+
body,
|
|
989
|
+
notice: "[whatsapp quoted attachment unavailable]"
|
|
990
|
+
});
|
|
648
991
|
}
|
|
992
|
+
return {
|
|
993
|
+
body,
|
|
994
|
+
commandBody,
|
|
995
|
+
location: location ?? void 0,
|
|
996
|
+
contactContext,
|
|
997
|
+
externalAdReplyContext,
|
|
998
|
+
replyContext,
|
|
999
|
+
mediaPath,
|
|
1000
|
+
mediaType,
|
|
1001
|
+
mediaFileName,
|
|
1002
|
+
mediaKind,
|
|
1003
|
+
nativeMedia
|
|
1004
|
+
};
|
|
649
1005
|
}
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
return
|
|
662
|
-
}
|
|
663
|
-
function rememberWhatsAppBaileysCacheEntry(cache, key, value, ttlMs) {
|
|
664
|
-
if (!cache) return;
|
|
665
|
-
if (cache.has(key)) cache.delete(key);
|
|
666
|
-
cache.set(key, {
|
|
667
|
-
expiresAt: Date.now() + ttlMs,
|
|
668
|
-
value
|
|
669
|
-
});
|
|
670
|
-
while (cache.size > WHATSAPP_GROUP_METADATA_CACHE_MAX_ENTRIES) {
|
|
671
|
-
const oldest = cache.keys().next();
|
|
672
|
-
if (oldest.done) break;
|
|
673
|
-
cache.delete(oldest.value);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
function readWhatsAppBaileysCacheEntry(cache, key) {
|
|
677
|
-
const entry = cache.get(key);
|
|
678
|
-
if (!entry) return;
|
|
679
|
-
if (entry.expiresAt <= Date.now()) {
|
|
680
|
-
cache.delete(key);
|
|
681
|
-
return;
|
|
682
|
-
}
|
|
683
|
-
cache.delete(key);
|
|
684
|
-
cache.set(key, entry);
|
|
685
|
-
return entry.value;
|
|
686
|
-
}
|
|
687
|
-
function logWhatsAppVerbose(enabled, message) {
|
|
688
|
-
if (!enabled) return;
|
|
689
|
-
defaultRuntime.log(message);
|
|
690
|
-
}
|
|
691
|
-
function isDirectUserJid(jid) {
|
|
692
|
-
return /^(\d+)(?::\d+)?@(s\.whatsapp\.net|c\.us|lid|hosted|hosted\.lid)$/i.test(jid.trim());
|
|
693
|
-
}
|
|
694
|
-
function getActiveReachoutTimelock(state) {
|
|
695
|
-
if (state?.isActive !== true) return;
|
|
696
|
-
const endsAt = state.timeEnforcementEnds?.getTime();
|
|
697
|
-
return endsAt === void 0 || !Number.isFinite(endsAt) || endsAt > Date.now() ? state : void 0;
|
|
698
|
-
}
|
|
699
|
-
function formatReachoutTimelockError(state) {
|
|
700
|
-
const details = [state.enforcementType ? `type=${state.enforcementType}` : void 0, state.timeEnforcementEnds instanceof Date && Number.isFinite(state.timeEnforcementEnds.getTime()) ? `until=${state.timeEnforcementEnds.toISOString()}` : void 0].filter(Boolean);
|
|
701
|
-
return `WhatsApp reachout timelock is active; direct messages are temporarily blocked${details.length ? ` (${details.join(", ")})` : ""}`;
|
|
1006
|
+
//#endregion
|
|
1007
|
+
//#region extensions/whatsapp/src/inbound/dedupe.ts
|
|
1008
|
+
const recentOutboundMessages = createDedupeCache({
|
|
1009
|
+
ttlMs: 20 * 6e4,
|
|
1010
|
+
maxSize: 5e3
|
|
1011
|
+
});
|
|
1012
|
+
function buildMessageKey(params) {
|
|
1013
|
+
const accountId = params.accountId.trim();
|
|
1014
|
+
const remoteJid = params.remoteJid.trim();
|
|
1015
|
+
const messageId = params.messageId.trim();
|
|
1016
|
+
if (!accountId || !remoteJid || !messageId || messageId === "unknown") return null;
|
|
1017
|
+
return `${accountId}:${remoteJid}:${messageId}`;
|
|
702
1018
|
}
|
|
703
|
-
function
|
|
704
|
-
|
|
705
|
-
channel: "whatsapp",
|
|
706
|
-
accountId,
|
|
707
|
-
direction: "inbound"
|
|
708
|
-
});
|
|
1019
|
+
function resetWebInboundDedupe() {
|
|
1020
|
+
recentOutboundMessages.clear();
|
|
709
1021
|
}
|
|
710
|
-
function
|
|
711
|
-
|
|
712
|
-
|
|
1022
|
+
function rememberRecentOutboundMessage(params) {
|
|
1023
|
+
const key = buildMessageKey(params);
|
|
1024
|
+
if (!key) return;
|
|
1025
|
+
recentOutboundMessages.check(key);
|
|
713
1026
|
}
|
|
714
|
-
function
|
|
715
|
-
|
|
1027
|
+
function isRecentOutboundMessage(params) {
|
|
1028
|
+
const key = buildMessageKey(params);
|
|
1029
|
+
if (!key) return false;
|
|
1030
|
+
return recentOutboundMessages.peek(key);
|
|
716
1031
|
}
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
const
|
|
721
|
-
const connectedAtMs = Date.now();
|
|
722
|
-
if (options.socketRef) options.socketRef.current = sock;
|
|
723
|
-
const shouldRetryDisconnect = () => options.shouldRetryDisconnect?.() === true;
|
|
724
|
-
const disconnectRetryPolicy = options.disconnectRetryPolicy ?? DEFAULT_RECONNECT_POLICY;
|
|
725
|
-
const sendRetryMaxAttempts = disconnectRetryPolicy.maxAttempts > 0 ? disconnectRetryPolicy.maxAttempts : DEFAULT_RECONNECT_POLICY.maxAttempts;
|
|
726
|
-
const sendOperationTimeoutMs = resolveWhatsAppSocketOperationTimeoutMs(options.socketTiming.defaultQueryTimeoutMs);
|
|
727
|
-
let onCloseResolve = null;
|
|
728
|
-
const onClose = new Promise((resolve) => {
|
|
729
|
-
onCloseResolve = resolve;
|
|
730
|
-
});
|
|
731
|
-
const resolveClose = (reason) => {
|
|
732
|
-
if (!onCloseResolve) return;
|
|
733
|
-
const resolver = onCloseResolve;
|
|
734
|
-
onCloseResolve = null;
|
|
735
|
-
resolver(reason);
|
|
736
|
-
};
|
|
737
|
-
const presence = options.selfChatMode ? "unavailable" : "available";
|
|
738
|
-
try {
|
|
739
|
-
await createWhatsAppSocketOperationTimeoutAdapter(sock, sendOperationTimeoutMs).sendPresenceUpdate(presence);
|
|
740
|
-
logWhatsAppVerbose(options.verbose, `Sent global '${presence}' presence on connect`);
|
|
741
|
-
} catch (err) {
|
|
742
|
-
logWhatsAppVerbose(options.verbose, `Failed to send '${presence}' presence on connect: ${String(err)}`);
|
|
743
|
-
}
|
|
744
|
-
const selfIdentity = await readWebSelfIdentityForDecision(options.authDir, sock.user);
|
|
745
|
-
if (selfIdentity.outcome === "unstable") throw new WhatsAppAuthUnstableError("WhatsApp auth state is still stabilizing; retrying inbox attach.");
|
|
746
|
-
const self = selfIdentity.identity;
|
|
747
|
-
const getCurrentSock = () => {
|
|
748
|
-
if (!options.socketRef) return sock;
|
|
749
|
-
if (options.socketRef.current) return options.socketRef.current;
|
|
750
|
-
if (!self.e164 && !self.jid && !self.lid) return null;
|
|
751
|
-
const successor = getWhatsAppConnectionController(options.accountId);
|
|
752
|
-
if (!successor) return null;
|
|
753
|
-
const successorIdentity = successor.getSelfIdentity();
|
|
754
|
-
if (!successorIdentity || !identitiesOverlap(self, successorIdentity)) return null;
|
|
755
|
-
return successor.getCurrentSock();
|
|
756
|
-
};
|
|
757
|
-
const durableInboundQueue = options.durableInboundQueue ?? createWhatsAppDurableInboundQueue(options.accountId);
|
|
758
|
-
const inboundDebounceMs = Math.max(0, Math.trunc(options.debounceMs ?? 0));
|
|
759
|
-
const pendingDebounceKeys = /* @__PURE__ */ new Set();
|
|
760
|
-
const activeInboundFlushes = /* @__PURE__ */ new Set();
|
|
761
|
-
const pendingMessageHandlers = /* @__PURE__ */ new Set();
|
|
762
|
-
let durableIngressActive = false;
|
|
763
|
-
const debounceWorkWaiters = /* @__PURE__ */ new Set();
|
|
764
|
-
const notifyDebounceWork = () => {
|
|
765
|
-
if (debounceWorkWaiters.size === 0) return;
|
|
766
|
-
const waiters = [...debounceWorkWaiters];
|
|
767
|
-
debounceWorkWaiters.clear();
|
|
768
|
-
for (const resolve of waiters) resolve();
|
|
769
|
-
};
|
|
770
|
-
const waitForDebounceWorkOrIdle = (handlers) => {
|
|
771
|
-
if (pendingDebounceKeys.size > 0 || activeInboundFlushes.size > 0) return Promise.resolve();
|
|
772
|
-
if (pendingMessageHandlers.size === 0) return Promise.resolve();
|
|
773
|
-
return new Promise((resolve) => {
|
|
774
|
-
const finish = () => {
|
|
775
|
-
debounceWorkWaiters.delete(finish);
|
|
776
|
-
resolve();
|
|
777
|
-
};
|
|
778
|
-
debounceWorkWaiters.add(finish);
|
|
779
|
-
Promise.allSettled(handlers).then(finish);
|
|
780
|
-
});
|
|
781
|
-
};
|
|
782
|
-
let nextReceiveOrder = 0;
|
|
783
|
-
const publishPendingWorkState = (at = Date.now()) => {
|
|
784
|
-
options.onPendingWorkChanged?.(pendingMessageHandlers.size + pendingDebounceKeys.size + activeInboundFlushes.size + (durableIngressActive ? 1 : 0), at);
|
|
785
|
-
};
|
|
786
|
-
const buildInboundDebounceKey = (msg) => {
|
|
787
|
-
const admission = requireWhatsAppInboundAdmission(msg);
|
|
788
|
-
const sender = msg.platform.sender;
|
|
789
|
-
const senderKey = admission.conversation.kind === "group" ? getPrimaryIdentityId(sender ?? null) ?? msg.platform.senderJid ?? msg.platform.senderE164 ?? msg.platform.senderName ?? admission.sender.id : admission.conversation.id;
|
|
790
|
-
if (!senderKey) return null;
|
|
791
|
-
return `${admission.accountId}:${admission.conversation.id}:${senderKey}`;
|
|
792
|
-
};
|
|
793
|
-
const shouldDebounceInboundMessage = (msg) => options.shouldDebounce?.(msg) ?? true;
|
|
794
|
-
const orderDebouncedInboundEntries = (entries) => entries.toSorted((a, b) => {
|
|
795
|
-
const timestampDiff = (a.event.timestamp ?? 0) - (b.event.timestamp ?? 0);
|
|
796
|
-
if (timestampDiff !== 0) return timestampDiff;
|
|
797
|
-
return (a.receiveOrder ?? 0) - (b.receiveOrder ?? 0);
|
|
798
|
-
});
|
|
799
|
-
const debouncer = createInboundDebouncer({
|
|
800
|
-
debounceMs: inboundDebounceMs,
|
|
801
|
-
buildKey: (msg) => msg.debounceKey ?? buildInboundDebounceKey(msg),
|
|
802
|
-
shouldDebounce: shouldDebounceInboundMessage,
|
|
803
|
-
onFlush: async (entries) => {
|
|
804
|
-
let finishFlush;
|
|
805
|
-
const flushTask = new Promise((resolve) => {
|
|
806
|
-
finishFlush = resolve;
|
|
807
|
-
});
|
|
808
|
-
activeInboundFlushes.add(flushTask);
|
|
809
|
-
publishPendingWorkState();
|
|
810
|
-
notifyDebounceWork();
|
|
811
|
-
try {
|
|
812
|
-
const orderedEntries = orderDebouncedInboundEntries(entries);
|
|
813
|
-
const last = orderedEntries.at(-1);
|
|
814
|
-
if (!last) return;
|
|
815
|
-
const { lifecycle, settle, abandon } = fanInChannelIngressLifecycles(orderedEntries.map((entry) => entry.turnAdoptionLifecycle));
|
|
816
|
-
try {
|
|
817
|
-
if (orderedEntries.length === 1) {
|
|
818
|
-
await options.onMessage(attachWhatsAppIngressLifecycle(last, lifecycle));
|
|
819
|
-
await settle();
|
|
820
|
-
await Promise.all(orderedEntries.map((entry) => maybeMarkInboundAsRead(entry.readReceipt)));
|
|
821
|
-
return;
|
|
822
|
-
}
|
|
823
|
-
const mentioned = /* @__PURE__ */ new Set();
|
|
824
|
-
for (const entry of orderedEntries) for (const jid of entry.group?.mentions?.jids ?? []) mentioned.add(jid);
|
|
825
|
-
const combinedBody = orderedEntries.map((entry) => entry.payload.body).filter(Boolean).join("\n");
|
|
826
|
-
const combinedCommandBody = orderedEntries.map((entry) => entry.payload.commandBody ?? entry.payload.body).filter(Boolean).join("\n");
|
|
827
|
-
const combinedMentions = mentioned.size > 0 ? {
|
|
828
|
-
...last.group?.mentions,
|
|
829
|
-
jids: Array.from(mentioned)
|
|
830
|
-
} : last.group?.mentions;
|
|
831
|
-
const combinedGroup = last.group || combinedMentions ? {
|
|
832
|
-
...last.group,
|
|
833
|
-
mentions: combinedMentions
|
|
834
|
-
} : void 0;
|
|
835
|
-
const combinedMessage = attachWhatsAppIngressLifecycle(withDeprecatedWebInboundMessageFlatAliases({
|
|
836
|
-
...last,
|
|
837
|
-
...lifecycle ? { turnAdoptionLifecycle: lifecycle } : {},
|
|
838
|
-
payload: {
|
|
839
|
-
...last.payload,
|
|
840
|
-
body: combinedBody,
|
|
841
|
-
commandBody: combinedCommandBody
|
|
842
|
-
},
|
|
843
|
-
group: combinedGroup,
|
|
844
|
-
event: {
|
|
845
|
-
...last.event,
|
|
846
|
-
isBatched: true
|
|
847
|
-
}
|
|
848
|
-
}), lifecycle);
|
|
849
|
-
await options.onMessage(combinedMessage);
|
|
850
|
-
await settle();
|
|
851
|
-
await Promise.all(orderedEntries.map((entry) => maybeMarkInboundAsRead(entry.readReceipt)));
|
|
852
|
-
} catch (error) {
|
|
853
|
-
await abandon();
|
|
854
|
-
throw error;
|
|
855
|
-
}
|
|
856
|
-
} finally {
|
|
857
|
-
for (const entry of entries) if (entry.debounceKey) pendingDebounceKeys.delete(entry.debounceKey);
|
|
858
|
-
activeInboundFlushes.delete(flushTask);
|
|
859
|
-
finishFlush();
|
|
860
|
-
publishPendingWorkState();
|
|
861
|
-
}
|
|
862
|
-
},
|
|
863
|
-
onError: (err) => {
|
|
864
|
-
inboundLogger.error({ error: String(err) }, "failed handling inbound web message");
|
|
865
|
-
inboundConsoleLog.error(`Failed handling inbound web message: ${String(err)}`);
|
|
866
|
-
}
|
|
867
|
-
});
|
|
868
|
-
const groupMetadataCache = options.groupMetadataCache ?? /* @__PURE__ */ new Map();
|
|
869
|
-
const groupMetaCache = /* @__PURE__ */ new Map();
|
|
870
|
-
const lidLookup = sock.signalRepository?.lidMapping;
|
|
871
|
-
const publishedGroupMetadataJids = /* @__PURE__ */ new Set();
|
|
872
|
-
const invalidatedGroupMetadataJids = /* @__PURE__ */ new Set();
|
|
873
|
-
let groupMetadataCacheClosed = false;
|
|
874
|
-
const resolveInboundJid = async (jid) => resolveJidToE164(jid, {
|
|
875
|
-
authDir: options.authDir,
|
|
876
|
-
lidLookup
|
|
877
|
-
});
|
|
878
|
-
const resolveReactionTargetJids = async (jid) => resolveEquivalentWhatsAppDirectChatJids(jid, {
|
|
879
|
-
authDir: options.authDir,
|
|
880
|
-
lidLookup
|
|
881
|
-
});
|
|
882
|
-
const rememberBaileysMessage = (remoteJid, messageId, message) => {
|
|
883
|
-
if (!options.recentMessageKeys || !remoteJid || !messageId || !message) return;
|
|
884
|
-
rememberWhatsAppBaileysCacheEntry(options.recentMessageKeys, `${remoteJid}:${messageId}`, message, BAILEYS_MESSAGE_TTL_MS);
|
|
885
|
-
};
|
|
886
|
-
const rememberOutboundMessage = (remoteJid, result) => {
|
|
887
|
-
const messageId = typeof result === "object" && result && "key" in result ? result.key?.id ?? "" : "";
|
|
888
|
-
if (!messageId) return;
|
|
889
|
-
rememberRecentOutboundMessage({
|
|
890
|
-
accountId: options.accountId,
|
|
891
|
-
remoteJid,
|
|
892
|
-
messageId
|
|
893
|
-
});
|
|
894
|
-
const message = typeof result === "object" && result && "message" in result ? result.message : void 0;
|
|
895
|
-
rememberBaileysMessage(remoteJid, messageId, message);
|
|
896
|
-
cacheInboundMessageMeta(options.accountId, remoteJid, messageId, {
|
|
897
|
-
fromMe: true,
|
|
898
|
-
body: extractText(message ?? void 0)
|
|
899
|
-
});
|
|
900
|
-
};
|
|
901
|
-
const trackLateAcceptedSend = (jid, promise) => {
|
|
902
|
-
promise.then((result) => {
|
|
903
|
-
rememberOutboundMessage(jid, result);
|
|
904
|
-
}, () => {});
|
|
905
|
-
};
|
|
906
|
-
let reachoutTimeLock;
|
|
907
|
-
let reachoutTimeLockFetch;
|
|
908
|
-
let reachoutTimeLockVersion = 0;
|
|
909
|
-
let verifiedSendReady;
|
|
910
|
-
const rememberReachoutTimeLock = (state) => {
|
|
911
|
-
reachoutTimeLock = state;
|
|
912
|
-
reachoutTimeLockVersion += 1;
|
|
913
|
-
verifiedSendReady = void 0;
|
|
914
|
-
};
|
|
915
|
-
const fetchReachoutTimeLock = async (currentSock) => {
|
|
916
|
-
if (typeof currentSock.fetchAccountReachoutTimelock !== "function") return;
|
|
917
|
-
if (!reachoutTimeLockFetch) reachoutTimeLockFetch = currentSock.fetchAccountReachoutTimelock().then((state) => {
|
|
918
|
-
rememberReachoutTimeLock(state);
|
|
919
|
-
return state;
|
|
920
|
-
}).catch((err) => {
|
|
921
|
-
logWhatsAppVerbose(options.verbose, `Failed fetching WhatsApp reachout timelock before send: ${formatError(err)}`);
|
|
922
|
-
}).finally(() => {
|
|
923
|
-
reachoutTimeLockFetch = void 0;
|
|
924
|
-
});
|
|
925
|
-
return await reachoutTimeLockFetch;
|
|
926
|
-
};
|
|
927
|
-
const rememberVerifiedSendReady = (jid, currentSock) => {
|
|
928
|
-
verifiedSendReady = {
|
|
929
|
-
jid,
|
|
930
|
-
sock: currentSock,
|
|
931
|
-
reachoutTimeLockVersion
|
|
932
|
-
};
|
|
933
|
-
};
|
|
934
|
-
const consumeVerifiedSendReady = (jid, currentSock) => {
|
|
935
|
-
if (verifiedSendReady?.jid !== jid || verifiedSendReady.sock !== currentSock || verifiedSendReady.reachoutTimeLockVersion !== reachoutTimeLockVersion) return false;
|
|
936
|
-
verifiedSendReady = void 0;
|
|
937
|
-
return true;
|
|
938
|
-
};
|
|
939
|
-
const assertCanSendToJid = async (jid, currentSock, readinessOptions) => {
|
|
940
|
-
if (!isDirectUserJid(jid)) return;
|
|
941
|
-
if (readinessOptions?.useVerifiedReady && consumeVerifiedSendReady(jid, currentSock)) return;
|
|
942
|
-
const state = getActiveReachoutTimelock(reachoutTimeLock) ?? await fetchReachoutTimeLock(currentSock);
|
|
943
|
-
const activeState = getActiveReachoutTimelock(state);
|
|
944
|
-
if (activeState) throw new Error(formatReachoutTimelockError(activeState));
|
|
945
|
-
if (readinessOptions?.rememberReady && state) rememberVerifiedSendReady(jid, currentSock);
|
|
946
|
-
};
|
|
947
|
-
const assertCanSendTo = async (to) => {
|
|
948
|
-
const currentSock = getCurrentSock();
|
|
949
|
-
if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
950
|
-
const jid = options.authDir ? toWhatsappJidWithLid(to, { authDir: options.authDir }) : toWhatsappJid(to);
|
|
951
|
-
await assertCanSendToJid(jid, currentSock, { rememberReady: true });
|
|
952
|
-
};
|
|
953
|
-
const sendTrackedMessage = async (jid, content, sendOptions) => {
|
|
954
|
-
let lastErr = /* @__PURE__ */ new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
955
|
-
for (let attempt = 1;; attempt++) {
|
|
956
|
-
const currentSock = getCurrentSock();
|
|
957
|
-
if (currentSock) try {
|
|
958
|
-
await assertCanSendToJid(jid, currentSock, { useVerifiedReady: true });
|
|
959
|
-
const result = await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs, { onSendMessageTimeout: ({ jid: timedOutJid, promise }) => {
|
|
960
|
-
trackLateAcceptedSend(timedOutJid, promise);
|
|
961
|
-
} }).sendMessage(jid, content, sendOptions);
|
|
962
|
-
rememberOutboundMessage(jid, result);
|
|
963
|
-
return result;
|
|
964
|
-
} catch (err) {
|
|
965
|
-
if (!shouldRetryDisconnect() || !isRetryableSendDisconnectError(err)) throw err;
|
|
966
|
-
lastErr = err;
|
|
967
|
-
if (shouldClearSocketRefAfterSendFailure(err) && options.socketRef?.current === currentSock) options.socketRef.current = null;
|
|
968
|
-
}
|
|
969
|
-
else if (!shouldRetryDisconnect()) throw lastErr;
|
|
970
|
-
if (attempt >= sendRetryMaxAttempts) throw lastErr;
|
|
971
|
-
const delayMs = computeBackoff(disconnectRetryPolicy, attempt);
|
|
972
|
-
logWhatsAppVerbose(options.verbose, `Waiting ${delayMs}ms for WhatsApp reconnect before retrying send to ${jid}: ${formatError(lastErr)}`);
|
|
973
|
-
try {
|
|
974
|
-
await sleepWithAbort(delayMs, options.disconnectRetryAbortSignal);
|
|
975
|
-
} catch {
|
|
976
|
-
throw lastErr;
|
|
977
|
-
}
|
|
978
|
-
}
|
|
979
|
-
};
|
|
980
|
-
const sendApiSocketOperations = {
|
|
981
|
-
sendMessage: (jid, content, sendOptions) => sendTrackedMessage(jid, content, sendOptions),
|
|
982
|
-
sendPresenceUpdate: async (presenceLocal, jid) => {
|
|
983
|
-
const currentSock = getCurrentSock();
|
|
984
|
-
if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
985
|
-
return await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs).sendPresenceUpdate(presenceLocal, jid);
|
|
986
|
-
}
|
|
987
|
-
};
|
|
988
|
-
const summarizeGroupMeta = async (meta) => {
|
|
989
|
-
const participantEntries = await Promise.all(meta.participants?.map(async (p) => {
|
|
990
|
-
const mapped = await resolveInboundJid(p.id);
|
|
991
|
-
return {
|
|
992
|
-
display: mapped ?? p.id,
|
|
993
|
-
mention: {
|
|
994
|
-
id: p.id,
|
|
995
|
-
lid: p.lid,
|
|
996
|
-
phoneNumber: p.phoneNumber,
|
|
997
|
-
e164: mapped
|
|
998
|
-
}
|
|
999
|
-
};
|
|
1000
|
-
}) ?? []);
|
|
1001
|
-
const participants = participantEntries.map((entry) => entry.display).filter(Boolean);
|
|
1002
|
-
const mentionParticipants = participantEntries.map((entry) => entry.mention);
|
|
1003
|
-
return {
|
|
1004
|
-
subject: meta.subject,
|
|
1005
|
-
participants,
|
|
1006
|
-
mentionParticipants,
|
|
1007
|
-
expires: resolveGroupMetadataExpiresAt() ?? 0
|
|
1008
|
-
};
|
|
1009
|
-
};
|
|
1010
|
-
const summarizeGroupMetaForReconnectCache = (meta) => ({
|
|
1011
|
-
subject: meta.subject,
|
|
1012
|
-
expires: resolveGroupMetadataExpiresAt() ?? NaN
|
|
1013
|
-
});
|
|
1014
|
-
const getGroupMeta = async (jid) => {
|
|
1015
|
-
const cached = readGroupMetadataCacheEntry(groupMetaCache, jid);
|
|
1016
|
-
if (cached) return cached;
|
|
1017
|
-
try {
|
|
1018
|
-
const meta = await (getCurrentSock() ?? sock).groupMetadata(jid);
|
|
1019
|
-
rememberWhatsAppBaileysCacheEntry(options.baileysGroupMetaCache, jid, meta, GROUP_META_TTL_MS);
|
|
1020
|
-
publishedGroupMetadataJids.add(jid);
|
|
1021
|
-
const entry = await summarizeGroupMeta(meta);
|
|
1022
|
-
rememberGroupMetadataCacheEntry(groupMetadataCache, jid, {
|
|
1023
|
-
subject: entry.subject,
|
|
1024
|
-
expires: entry.expires
|
|
1025
|
-
});
|
|
1026
|
-
rememberGroupMetadataCacheEntry(groupMetaCache, jid, entry);
|
|
1027
|
-
return entry;
|
|
1028
|
-
} catch (err) {
|
|
1029
|
-
const hydrated = readGroupMetadataCacheEntry(groupMetadataCache, jid);
|
|
1030
|
-
if (hydrated) {
|
|
1031
|
-
rememberGroupMetadataCacheEntry(groupMetaCache, jid, hydrated);
|
|
1032
|
-
logWhatsAppVerbose(options.verbose, `Using cached group metadata for ${jid} after fetch failure: ${String(err)}`);
|
|
1033
|
-
return hydrated;
|
|
1034
|
-
}
|
|
1035
|
-
logWhatsAppVerbose(options.verbose, `Failed to fetch group metadata for ${jid}: ${String(err)}`);
|
|
1036
|
-
return { expires: resolveGroupMetadataExpiresAt() ?? 0 };
|
|
1037
|
-
}
|
|
1038
|
-
};
|
|
1039
|
-
const resolveOutboundMentionsForGroup = async (jid, text) => {
|
|
1040
|
-
if (isJidGroup(jid) !== true || !mayContainWhatsAppOutboundMention(text)) return {
|
|
1041
|
-
text,
|
|
1042
|
-
mentionedJids: []
|
|
1043
|
-
};
|
|
1044
|
-
return resolveWhatsAppOutboundMentions({
|
|
1045
|
-
chatJid: jid,
|
|
1046
|
-
text,
|
|
1047
|
-
participants: (await getGroupMeta(jid)).mentionParticipants
|
|
1048
|
-
});
|
|
1049
|
-
};
|
|
1050
|
-
const applyOutboundMentionsToContent = async (jid, content) => {
|
|
1051
|
-
if ("text" in content && typeof content.text === "string") {
|
|
1052
|
-
const resolved = await resolveOutboundMentionsForGroup(jid, content.text);
|
|
1053
|
-
return addWhatsAppOutboundMentionsToContent({
|
|
1054
|
-
...content,
|
|
1055
|
-
text: resolved.text
|
|
1056
|
-
}, resolved.mentionedJids);
|
|
1057
|
-
}
|
|
1058
|
-
const caption = content.caption;
|
|
1059
|
-
if (typeof caption === "string") {
|
|
1060
|
-
const resolved = await resolveOutboundMentionsForGroup(jid, caption);
|
|
1061
|
-
return addWhatsAppOutboundMentionsToContent({
|
|
1062
|
-
...content,
|
|
1063
|
-
caption: resolved.text
|
|
1064
|
-
}, resolved.mentionedJids);
|
|
1065
|
-
}
|
|
1066
|
-
return content;
|
|
1067
|
-
};
|
|
1032
|
+
//#endregion
|
|
1033
|
+
//#region extensions/whatsapp/src/inbound/message-normalization.ts
|
|
1034
|
+
function createWhatsAppInboundMessageNormalizer(options) {
|
|
1035
|
+
const { socketSession, groupMetadata } = options;
|
|
1068
1036
|
const shouldSkipRecentOutboundEcho = (msg) => {
|
|
1069
1037
|
const id = msg.key?.id ?? void 0;
|
|
1070
1038
|
const remoteJid = msg.key?.remoteJid;
|
|
@@ -1073,44 +1041,43 @@ async function attachWebInboxToSocket(options) {
|
|
|
1073
1041
|
remoteJid,
|
|
1074
1042
|
messageId: id
|
|
1075
1043
|
})) return false;
|
|
1076
|
-
|
|
1044
|
+
options.logVerbose(`Skipping recent outbound WhatsApp echo ${id} for ${remoteJid}`);
|
|
1077
1045
|
return true;
|
|
1078
1046
|
};
|
|
1079
|
-
const
|
|
1047
|
+
const normalize = async (msg) => {
|
|
1080
1048
|
const id = msg.key?.id ?? void 0;
|
|
1081
1049
|
const remoteJid = msg.key?.remoteJid;
|
|
1082
|
-
if (!remoteJid) return null;
|
|
1083
|
-
if (remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast")) return null;
|
|
1050
|
+
if (!remoteJid || remoteJid.endsWith("@status") || remoteJid.endsWith("@broadcast")) return null;
|
|
1084
1051
|
const group = isJidGroup(remoteJid) === true;
|
|
1085
1052
|
if (shouldSkipRecentOutboundEcho(msg)) return null;
|
|
1086
1053
|
if (!hasInboundUserContent(msg.message ?? void 0)) return null;
|
|
1087
1054
|
const participantJid = msg.key?.participant ?? void 0;
|
|
1088
|
-
const from = group ? remoteJid : await resolveInboundJid(remoteJid);
|
|
1055
|
+
const from = group ? remoteJid : await socketSession.resolveInboundJid(remoteJid);
|
|
1089
1056
|
if (!from) return null;
|
|
1090
|
-
const senderE164 = group ? participantJid ? await resolveInboundJid(participantJid) : null : from;
|
|
1057
|
+
const senderE164 = group ? participantJid ? await socketSession.resolveInboundJid(participantJid) : null : from;
|
|
1091
1058
|
let groupSubject;
|
|
1092
1059
|
let groupParticipants;
|
|
1093
1060
|
if (group) {
|
|
1094
|
-
const meta = await
|
|
1061
|
+
const meta = await groupMetadata.get(remoteJid);
|
|
1095
1062
|
groupSubject = meta.subject;
|
|
1096
1063
|
groupParticipants = meta.participants;
|
|
1097
1064
|
}
|
|
1098
|
-
const messageTimestampSeconds =
|
|
1065
|
+
const messageTimestampSeconds = options.parseTimestampSeconds(msg.messageTimestamp);
|
|
1099
1066
|
const messageTimestampMs = messageTimestampSeconds !== void 0 ? messageTimestampSeconds * 1e3 : void 0;
|
|
1100
1067
|
const access = await checkInboundAccessControl({
|
|
1101
1068
|
cfg: options.loadConfig?.() ?? options.cfg,
|
|
1102
1069
|
accountId: options.accountId,
|
|
1103
1070
|
from,
|
|
1104
|
-
selfE164: self.e164 ?? null,
|
|
1071
|
+
selfE164: socketSession.self.e164 ?? null,
|
|
1105
1072
|
senderE164,
|
|
1106
1073
|
senderJid: participantJid,
|
|
1107
1074
|
group,
|
|
1108
1075
|
pushName: msg.pushName ?? void 0,
|
|
1109
1076
|
isFromMe: Boolean(msg.key?.fromMe),
|
|
1110
1077
|
messageTimestampMs,
|
|
1111
|
-
connectedAtMs,
|
|
1078
|
+
connectedAtMs: socketSession.connectedAtMs,
|
|
1112
1079
|
verbose: options.verbose,
|
|
1113
|
-
sock: { sendMessage: (jid, content) => sendTrackedMessage(jid, content) },
|
|
1080
|
+
sock: { sendMessage: (jid, content) => socketSession.sendTrackedMessage(jid, content) },
|
|
1114
1081
|
remoteJid
|
|
1115
1082
|
});
|
|
1116
1083
|
if (!access.allowed) return null;
|
|
@@ -1127,6 +1094,58 @@ async function attachWebInboxToSocket(options) {
|
|
|
1127
1094
|
access
|
|
1128
1095
|
};
|
|
1129
1096
|
};
|
|
1097
|
+
return {
|
|
1098
|
+
normalize,
|
|
1099
|
+
shouldSkipRecentOutboundEcho
|
|
1100
|
+
};
|
|
1101
|
+
}
|
|
1102
|
+
//#endregion
|
|
1103
|
+
//#region extensions/whatsapp/src/inbound/message-delivery.ts
|
|
1104
|
+
const INBOUND_CLOSE_DRAIN_TIMEOUT_MS = 5e3;
|
|
1105
|
+
const WHATSAPP_INGRESS_DRAIN_INTERVAL_MS = 1e3;
|
|
1106
|
+
function parseWhatsAppTimestampSeconds(value) {
|
|
1107
|
+
if (value == null) return;
|
|
1108
|
+
if (typeof value === "string") return parseStrictFiniteNumber(value);
|
|
1109
|
+
const parsed = Number(value);
|
|
1110
|
+
return Number.isFinite(parsed) ? parsed : void 0;
|
|
1111
|
+
}
|
|
1112
|
+
function logWhatsAppVerbose$1(enabled, message) {
|
|
1113
|
+
if (!enabled) return;
|
|
1114
|
+
defaultRuntime.log(message);
|
|
1115
|
+
}
|
|
1116
|
+
function recordAcceptedInboundActivity(accountId) {
|
|
1117
|
+
recordChannelActivity({
|
|
1118
|
+
channel: "whatsapp",
|
|
1119
|
+
accountId,
|
|
1120
|
+
direction: "inbound"
|
|
1121
|
+
});
|
|
1122
|
+
}
|
|
1123
|
+
function createWhatsAppMessageDeliveryCoordinator(options) {
|
|
1124
|
+
const inboundLogger = getChildLogger({ module: "web-inbound" });
|
|
1125
|
+
const inboundConsoleLog = createSubsystemLogger("gateway/channels/whatsapp").child("inbound");
|
|
1126
|
+
const sock = options.sock;
|
|
1127
|
+
const socketSession = options.socketSession;
|
|
1128
|
+
const groupMetadata = options.groupMetadata;
|
|
1129
|
+
const { connectedAtMs, self, getCurrentSock, resolveInboundJid, resolveReactionTargetJids, rememberBaileysMessage, assertCanSendToJid, sendTrackedMessage, socketOperations } = socketSession;
|
|
1130
|
+
const durableInboundQueue = options.durableInboundQueue ?? createWhatsAppDurableInboundQueue(options.accountId);
|
|
1131
|
+
const pendingMessageHandlers = /* @__PURE__ */ new Set();
|
|
1132
|
+
let durableIngressActive = false;
|
|
1133
|
+
let nextReceiveOrder = 0;
|
|
1134
|
+
const publishPendingWorkState = (at = Date.now()) => {
|
|
1135
|
+
options.onPendingWorkChanged?.(pendingMessageHandlers.size + messageDebouncer.pendingWorkCount() + (durableIngressActive ? 1 : 0), at);
|
|
1136
|
+
};
|
|
1137
|
+
const messageNormalizer = createWhatsAppInboundMessageNormalizer({
|
|
1138
|
+
cfg: options.cfg,
|
|
1139
|
+
loadConfig: options.loadConfig,
|
|
1140
|
+
accountId: options.accountId,
|
|
1141
|
+
verbose: options.verbose,
|
|
1142
|
+
socketSession,
|
|
1143
|
+
groupMetadata,
|
|
1144
|
+
parseTimestampSeconds: parseWhatsAppTimestampSeconds,
|
|
1145
|
+
logVerbose: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1146
|
+
});
|
|
1147
|
+
const normalizeInboundMessage = messageNormalizer.normalize;
|
|
1148
|
+
const shouldSkipRecentOutboundEcho = messageNormalizer.shouldSkipRecentOutboundEcho;
|
|
1130
1149
|
const buildReadReceiptTarget = (inbound) => inbound.id ? {
|
|
1131
1150
|
remoteJid: inbound.remoteJid,
|
|
1132
1151
|
id: inbound.id,
|
|
@@ -1136,20 +1155,15 @@ async function attachWebInboxToSocket(options) {
|
|
|
1136
1155
|
if (!target || options.sendReadReceipts === false) return;
|
|
1137
1156
|
const { id, remoteJid, participant } = target;
|
|
1138
1157
|
try {
|
|
1139
|
-
await
|
|
1140
|
-
remoteJid,
|
|
1141
|
-
id,
|
|
1142
|
-
participant,
|
|
1143
|
-
fromMe: false
|
|
1144
|
-
}]), sendOperationTimeoutMs);
|
|
1158
|
+
await socketSession.markRead(target);
|
|
1145
1159
|
const suffix = participant ? ` (participant ${participant})` : "";
|
|
1146
|
-
logWhatsAppVerbose(options.verbose, `Marked message ${id} as read for ${remoteJid}${suffix}`);
|
|
1160
|
+
logWhatsAppVerbose$1(options.verbose, `Marked message ${id} as read for ${remoteJid}${suffix}`);
|
|
1147
1161
|
} catch (err) {
|
|
1148
|
-
logWhatsAppVerbose(options.verbose, `Failed to mark message ${id} read: ${String(err)}`);
|
|
1162
|
+
logWhatsAppVerbose$1(options.verbose, `Failed to mark message ${id} read: ${String(err)}`);
|
|
1149
1163
|
}
|
|
1150
1164
|
};
|
|
1151
1165
|
const maybeLogSkippedSelfChatReadReceipt = (inbound, target) => {
|
|
1152
|
-
if (target?.id && inbound.access.isSelfChat && options.verbose) logWhatsAppVerbose(options.verbose, `Self-chat mode: skipping read receipt for ${target.id}`);
|
|
1166
|
+
if (target?.id && inbound.access.isSelfChat && options.verbose) logWhatsAppVerbose$1(options.verbose, `Self-chat mode: skipping read receipt for ${target.id}`);
|
|
1153
1167
|
};
|
|
1154
1168
|
const maybeMarkNonSelfChatReadReceipt = async (inbound, target) => {
|
|
1155
1169
|
if (inbound.access.isSelfChat) {
|
|
@@ -1158,6 +1172,17 @@ async function attachWebInboxToSocket(options) {
|
|
|
1158
1172
|
}
|
|
1159
1173
|
await maybeMarkInboundAsRead(target);
|
|
1160
1174
|
};
|
|
1175
|
+
const messageDebouncer = createWhatsAppInboundMessageDebouncer({
|
|
1176
|
+
debounceMs: options.debounceMs,
|
|
1177
|
+
onMessage: options.onMessage,
|
|
1178
|
+
shouldDebounce: options.shouldDebounce,
|
|
1179
|
+
markRead: maybeMarkInboundAsRead,
|
|
1180
|
+
onPendingWorkChanged: publishPendingWorkState,
|
|
1181
|
+
onError: (error) => {
|
|
1182
|
+
inboundLogger.error({ error: String(error) }, "failed handling inbound web message");
|
|
1183
|
+
inboundConsoleLog.error(`Failed handling inbound web message: ${String(error)}`);
|
|
1184
|
+
}
|
|
1185
|
+
});
|
|
1161
1186
|
const shouldSkipStaleAppend = (msg, upsertType) => {
|
|
1162
1187
|
if (upsertType !== "append") return false;
|
|
1163
1188
|
const APPEND_RECENT_GRACE_MS = 6e4;
|
|
@@ -1167,66 +1192,6 @@ async function attachWebInboxToSocket(options) {
|
|
|
1167
1192
|
return msgTsMs < (options.appendReplyWindow && nowMs <= options.appendReplyWindow.untilMs ? Math.max(options.appendReplyWindow.afterMs, nowMs - options.appendReplyWindow.maxAgeMs) : connectedAtMs - APPEND_RECENT_GRACE_MS);
|
|
1168
1193
|
};
|
|
1169
1194
|
const preparedInboundByDurableId = /* @__PURE__ */ new Map();
|
|
1170
|
-
const enrichInboundMessage = async (msg) => {
|
|
1171
|
-
const location = extractLocationData(msg.message ?? void 0);
|
|
1172
|
-
const locationText = location ? formatLocationText(location) : void 0;
|
|
1173
|
-
const contactContext = extractContactContext(msg.message ?? void 0);
|
|
1174
|
-
const externalAdReplyContext = extractExternalAdReplyContext(msg.message ?? void 0);
|
|
1175
|
-
let mediaKind = extractMediaKind(msg.message ?? void 0);
|
|
1176
|
-
let body = extractText(msg.message ?? void 0);
|
|
1177
|
-
if (locationText) body = [body, locationText].filter(Boolean).join("\n").trim();
|
|
1178
|
-
if (!body && !mediaKind) return null;
|
|
1179
|
-
body = body ?? "";
|
|
1180
|
-
const commandBody = body;
|
|
1181
|
-
const replyContext = describeReplyContext(msg.message);
|
|
1182
|
-
let mediaPath;
|
|
1183
|
-
let mediaType = mediaKind ? resolveInboundMediaMimetype(msg.message) : void 0;
|
|
1184
|
-
const nativeMedia = mediaKind ? {
|
|
1185
|
-
contentType: mediaType,
|
|
1186
|
-
kind: mediaKind
|
|
1187
|
-
} : void 0;
|
|
1188
|
-
let mediaFileName;
|
|
1189
|
-
const maxBytes = (typeof options.mediaMaxMb === "number" && options.mediaMaxMb > 0 ? options.mediaMaxMb : 50) * 1024 * 1024;
|
|
1190
|
-
const saveInboundMedia = async (inboundMedia) => {
|
|
1191
|
-
if (!inboundMedia) return;
|
|
1192
|
-
mediaPath = inboundMedia.saved.path;
|
|
1193
|
-
mediaType = inboundMedia.mimetype;
|
|
1194
|
-
mediaFileName = inboundMedia.fileName;
|
|
1195
|
-
};
|
|
1196
|
-
try {
|
|
1197
|
-
await saveInboundMedia(await downloadInboundMedia(msg, sock, maxBytes));
|
|
1198
|
-
} catch (err) {
|
|
1199
|
-
logWhatsAppVerbose(options.verbose, `Inbound media download failed: ${String(err)}`);
|
|
1200
|
-
body = formatInboundMediaUnavailableText({
|
|
1201
|
-
body,
|
|
1202
|
-
notice: "[whatsapp attachment unavailable]"
|
|
1203
|
-
});
|
|
1204
|
-
}
|
|
1205
|
-
if (!mediaPath && !mediaKind && replyContext?.media) try {
|
|
1206
|
-
await saveInboundMedia(await downloadQuotedInboundMedia(msg, sock, maxBytes));
|
|
1207
|
-
mediaKind = replyContext.media.kind ?? void 0;
|
|
1208
|
-
mediaType = mediaType ?? replyContext.media.contentType ?? void 0;
|
|
1209
|
-
} catch (err) {
|
|
1210
|
-
logWhatsAppVerbose(options.verbose, `Quoted media download failed: ${String(err)}`);
|
|
1211
|
-
body = formatInboundMediaUnavailableText({
|
|
1212
|
-
body,
|
|
1213
|
-
notice: "[whatsapp quoted attachment unavailable]"
|
|
1214
|
-
});
|
|
1215
|
-
}
|
|
1216
|
-
return {
|
|
1217
|
-
body,
|
|
1218
|
-
commandBody,
|
|
1219
|
-
location: location ?? void 0,
|
|
1220
|
-
contactContext,
|
|
1221
|
-
externalAdReplyContext,
|
|
1222
|
-
replyContext,
|
|
1223
|
-
mediaPath,
|
|
1224
|
-
mediaType,
|
|
1225
|
-
mediaFileName,
|
|
1226
|
-
mediaKind,
|
|
1227
|
-
nativeMedia
|
|
1228
|
-
};
|
|
1229
|
-
};
|
|
1230
1195
|
const enqueueInboundMessage = async (msg, inbound, enriched, durable) => {
|
|
1231
1196
|
const chatJid = inbound.remoteJid;
|
|
1232
1197
|
const sendComposing = async () => {
|
|
@@ -1234,18 +1199,18 @@ async function attachWebInboxToSocket(options) {
|
|
|
1234
1199
|
if (!currentSock) return;
|
|
1235
1200
|
try {
|
|
1236
1201
|
await assertCanSendToJid(chatJid, currentSock);
|
|
1237
|
-
await
|
|
1202
|
+
await socketOperations.sendPresenceUpdate("composing", chatJid);
|
|
1238
1203
|
} catch (err) {
|
|
1239
|
-
logWhatsAppVerbose(options.verbose, `Presence update failed: ${String(err)}`);
|
|
1204
|
+
logWhatsAppVerbose$1(options.verbose, `Presence update failed: ${String(err)}`);
|
|
1240
1205
|
}
|
|
1241
1206
|
};
|
|
1242
1207
|
const reply = async (text, optionsResult) => {
|
|
1243
|
-
const resolved = await
|
|
1208
|
+
const resolved = await groupMetadata.resolveOutboundMentions(chatJid, text);
|
|
1244
1209
|
return normalizeWhatsAppSendResult(await sendTrackedMessage(chatJid, addWhatsAppOutboundMentionsToContent({ text: resolved.text }, resolved.mentionedJids), optionsResult), "text");
|
|
1245
1210
|
};
|
|
1246
1211
|
const sendMedia = async (payload, optionsValue) => {
|
|
1247
1212
|
const previewPayload = await addWhatsAppImagePreviewFields(payload);
|
|
1248
|
-
return normalizeWhatsAppSendResult(await sendTrackedMessage(chatJid, await
|
|
1213
|
+
return normalizeWhatsAppSendResult(await sendTrackedMessage(chatJid, await groupMetadata.applyOutboundMentions(chatJid, previewPayload), optionsValue), "media");
|
|
1249
1214
|
};
|
|
1250
1215
|
const timestamp = inbound.messageTimestampMs;
|
|
1251
1216
|
const mentionedJids = extractMentionedJids(msg.message);
|
|
@@ -1341,15 +1306,6 @@ async function attachWebInboxToSocket(options) {
|
|
|
1341
1306
|
readReceipt: durable.readReceipt,
|
|
1342
1307
|
receiveOrder: durable.receiveOrder
|
|
1343
1308
|
});
|
|
1344
|
-
const debounceKey = buildInboundDebounceKey(inboundMessage);
|
|
1345
|
-
if (debounceKey) {
|
|
1346
|
-
inboundMessage.debounceKey = debounceKey;
|
|
1347
|
-
if (inboundDebounceMs > 0 && shouldDebounceInboundMessage(inboundMessage)) {
|
|
1348
|
-
pendingDebounceKeys.add(debounceKey);
|
|
1349
|
-
publishPendingWorkState();
|
|
1350
|
-
notifyDebounceWork();
|
|
1351
|
-
}
|
|
1352
|
-
}
|
|
1353
1309
|
if (inboundMessage.event.id) {
|
|
1354
1310
|
const admission = requireWhatsAppInboundAdmission(inboundMessage);
|
|
1355
1311
|
cacheInboundMessageMeta(admission.accountId, inboundMessage.platform.chatJid, inboundMessage.event.id, {
|
|
@@ -1360,7 +1316,7 @@ async function attachWebInboxToSocket(options) {
|
|
|
1360
1316
|
fromMe: inboundMessage.platform.fromMe
|
|
1361
1317
|
});
|
|
1362
1318
|
}
|
|
1363
|
-
await
|
|
1319
|
+
await messageDebouncer.enqueue(inboundMessage);
|
|
1364
1320
|
};
|
|
1365
1321
|
const processDurableInboundMessage = async (admission, lifecycle) => {
|
|
1366
1322
|
const { message: msg, ...context } = admission;
|
|
@@ -1381,7 +1337,7 @@ async function attachWebInboxToSocket(options) {
|
|
|
1381
1337
|
msg,
|
|
1382
1338
|
senderId: inbound.senderE164 ?? inbound.from,
|
|
1383
1339
|
resolveReactionTargetJids,
|
|
1384
|
-
logDebug: (message) => logWhatsAppVerbose(options.verbose, message)
|
|
1340
|
+
logDebug: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1385
1341
|
})) return "completed";
|
|
1386
1342
|
const readReceipt = buildReadReceiptTarget(inbound);
|
|
1387
1343
|
const deliveryReadReceipt = inbound.access.isSelfChat ? void 0 : readReceipt;
|
|
@@ -1389,7 +1345,12 @@ async function attachWebInboxToSocket(options) {
|
|
|
1389
1345
|
await maybeMarkNonSelfChatReadReceipt(inbound, readReceipt);
|
|
1390
1346
|
return "completed";
|
|
1391
1347
|
}
|
|
1392
|
-
const enriched = await
|
|
1348
|
+
const enriched = await enrichWhatsAppInboundMessage({
|
|
1349
|
+
msg,
|
|
1350
|
+
sock,
|
|
1351
|
+
mediaMaxMb: options.mediaMaxMb,
|
|
1352
|
+
logVerbose: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1353
|
+
});
|
|
1393
1354
|
if (!enriched) {
|
|
1394
1355
|
await maybeMarkNonSelfChatReadReceipt(inbound, deliveryReadReceipt);
|
|
1395
1356
|
return "completed";
|
|
@@ -1426,7 +1387,7 @@ async function attachWebInboxToSocket(options) {
|
|
|
1426
1387
|
selfLid: self.lid,
|
|
1427
1388
|
resolveInboundJid,
|
|
1428
1389
|
resolveReactionTargetJids,
|
|
1429
|
-
logVerboseMessage: (message) => logWhatsAppVerbose(options.verbose, message)
|
|
1390
|
+
logVerboseMessage: (message) => logWhatsAppVerbose$1(options.verbose, message)
|
|
1430
1391
|
})) continue;
|
|
1431
1392
|
const receivedAt = Date.now();
|
|
1432
1393
|
const skipStaleAppend = shouldSkipStaleAppend(msg, upsert.type);
|
|
@@ -1479,58 +1440,254 @@ async function attachWebInboxToSocket(options) {
|
|
|
1479
1440
|
else finishPreparation(void 0);
|
|
1480
1441
|
}
|
|
1481
1442
|
};
|
|
1482
|
-
const handleMessagesUpsertEvent = (upsert) => {
|
|
1483
|
-
const task = handleMessagesUpsert(upsert).catch((err) => {
|
|
1484
|
-
inboundLogger.error({ error: String(err) }, "messages.upsert handler error");
|
|
1485
|
-
inboundConsoleLog.error(`Messages upsert handler error: ${String(err)}`);
|
|
1443
|
+
const handleMessagesUpsertEvent = (upsert) => {
|
|
1444
|
+
const task = handleMessagesUpsert(upsert).catch((err) => {
|
|
1445
|
+
inboundLogger.error({ error: String(err) }, "messages.upsert handler error");
|
|
1446
|
+
inboundConsoleLog.error(`Messages upsert handler error: ${String(err)}`);
|
|
1447
|
+
});
|
|
1448
|
+
pendingMessageHandlers.add(task);
|
|
1449
|
+
publishPendingWorkState();
|
|
1450
|
+
task.finally(() => {
|
|
1451
|
+
pendingMessageHandlers.delete(task);
|
|
1452
|
+
publishPendingWorkState();
|
|
1453
|
+
});
|
|
1454
|
+
};
|
|
1455
|
+
const drainDebouncedInboundMessages = async () => {
|
|
1456
|
+
await messageDebouncer.drain();
|
|
1457
|
+
};
|
|
1458
|
+
const drainInboundBeforeSocketClose = async () => {
|
|
1459
|
+
for (;;) {
|
|
1460
|
+
await drainDebouncedInboundMessages();
|
|
1461
|
+
if (pendingMessageHandlers.size === 0) break;
|
|
1462
|
+
const handlers = Array.from(pendingMessageHandlers);
|
|
1463
|
+
await Promise.race([Promise.allSettled(handlers), messageDebouncer.waitForWorkOrIdle(handlers, pendingMessageHandlers.size === 0)]);
|
|
1464
|
+
if (pendingMessageHandlers.size === 0 && !messageDebouncer.hasPendingWork()) break;
|
|
1465
|
+
}
|
|
1466
|
+
await drainDebouncedInboundMessages();
|
|
1467
|
+
for (;;) {
|
|
1468
|
+
await durableInboundMonitor.waitForIdle();
|
|
1469
|
+
if (!messageDebouncer.hasPendingWork()) break;
|
|
1470
|
+
await drainDebouncedInboundMessages();
|
|
1471
|
+
}
|
|
1472
|
+
await durableInboundMonitor.stop();
|
|
1473
|
+
};
|
|
1474
|
+
const drainInboundBeforeSocketCloseWithTimeout = async () => {
|
|
1475
|
+
let timeout = null;
|
|
1476
|
+
try {
|
|
1477
|
+
await Promise.race([drainInboundBeforeSocketClose(), new Promise((_, reject) => {
|
|
1478
|
+
timeout = setTimeout(() => {
|
|
1479
|
+
reject(/* @__PURE__ */ new Error(`Timed out draining WhatsApp inbound debounce after ${INBOUND_CLOSE_DRAIN_TIMEOUT_MS}ms`));
|
|
1480
|
+
}, INBOUND_CLOSE_DRAIN_TIMEOUT_MS);
|
|
1481
|
+
timeout.unref?.();
|
|
1482
|
+
})]);
|
|
1483
|
+
} finally {
|
|
1484
|
+
if (timeout) clearTimeout(timeout);
|
|
1485
|
+
durableInboundMonitor.stop();
|
|
1486
|
+
}
|
|
1487
|
+
};
|
|
1488
|
+
let detachMessagesUpsert;
|
|
1489
|
+
const start = () => {
|
|
1490
|
+
if (detachMessagesUpsert) return;
|
|
1491
|
+
detachMessagesUpsert = socketSession.listen("messages.upsert", handleMessagesUpsertEvent);
|
|
1492
|
+
durableInboundMonitor.start();
|
|
1493
|
+
};
|
|
1494
|
+
const stopIntake = () => {
|
|
1495
|
+
detachMessagesUpsert?.();
|
|
1496
|
+
detachMessagesUpsert = void 0;
|
|
1497
|
+
};
|
|
1498
|
+
return {
|
|
1499
|
+
start,
|
|
1500
|
+
stopIntake,
|
|
1501
|
+
drain: drainInboundBeforeSocketCloseWithTimeout
|
|
1502
|
+
};
|
|
1503
|
+
}
|
|
1504
|
+
//#endregion
|
|
1505
|
+
//#region extensions/whatsapp/src/inbound/socket-session.ts
|
|
1506
|
+
const LOGGED_OUT_STATUS = DisconnectReason.loggedOut;
|
|
1507
|
+
const RECONNECT_IN_PROGRESS_ERROR = "no active socket - reconnection in progress";
|
|
1508
|
+
const BAILEYS_MESSAGE_TTL_MS = 600 * 1e3;
|
|
1509
|
+
function isDirectUserJid(jid) {
|
|
1510
|
+
return /^(\d+)(?::\d+)?@(s\.whatsapp\.net|c\.us|lid|hosted|hosted\.lid)$/i.test(jid.trim());
|
|
1511
|
+
}
|
|
1512
|
+
function getActiveReachoutTimelock(state) {
|
|
1513
|
+
if (state?.isActive !== true) return;
|
|
1514
|
+
const endsAt = state.timeEnforcementEnds?.getTime();
|
|
1515
|
+
return endsAt === void 0 || !Number.isFinite(endsAt) || endsAt > Date.now() ? state : void 0;
|
|
1516
|
+
}
|
|
1517
|
+
function formatReachoutTimelockError(state) {
|
|
1518
|
+
const details = [state.enforcementType ? `type=${state.enforcementType}` : void 0, state.timeEnforcementEnds instanceof Date && Number.isFinite(state.timeEnforcementEnds.getTime()) ? `until=${state.timeEnforcementEnds.toISOString()}` : void 0].filter(Boolean);
|
|
1519
|
+
return `WhatsApp reachout timelock is active; direct messages are temporarily blocked${details.length ? ` (${details.join(", ")})` : ""}`;
|
|
1520
|
+
}
|
|
1521
|
+
function isRetryableSendDisconnectError(error) {
|
|
1522
|
+
if (isWhatsAppSocketOperationTimeoutError(error)) return false;
|
|
1523
|
+
return /closed|reset|timed\s*out|disconnect|no active socket/i.test(formatError(error));
|
|
1524
|
+
}
|
|
1525
|
+
function shouldClearSocketRefAfterSendFailure(error) {
|
|
1526
|
+
return /closed|reset|disconnect|no active socket/i.test(formatError(error));
|
|
1527
|
+
}
|
|
1528
|
+
async function createWhatsAppAttachedSocketSession(options) {
|
|
1529
|
+
const { sock } = options;
|
|
1530
|
+
const connectedAtMs = Date.now();
|
|
1531
|
+
if (options.socketRef) options.socketRef.current = sock;
|
|
1532
|
+
const shouldRetryDisconnect = () => options.shouldRetryDisconnect?.() === true;
|
|
1533
|
+
const disconnectRetryPolicy = options.disconnectRetryPolicy ?? DEFAULT_RECONNECT_POLICY;
|
|
1534
|
+
const sendRetryMaxAttempts = disconnectRetryPolicy.maxAttempts > 0 ? disconnectRetryPolicy.maxAttempts : DEFAULT_RECONNECT_POLICY.maxAttempts;
|
|
1535
|
+
const sendOperationTimeoutMs = resolveWhatsAppSocketOperationTimeoutMs(options.socketTiming.defaultQueryTimeoutMs);
|
|
1536
|
+
let onCloseResolve = null;
|
|
1537
|
+
const onClose = new Promise((resolve) => {
|
|
1538
|
+
onCloseResolve = resolve;
|
|
1539
|
+
});
|
|
1540
|
+
const resolveClose = (reason) => {
|
|
1541
|
+
if (!onCloseResolve) return;
|
|
1542
|
+
const resolver = onCloseResolve;
|
|
1543
|
+
onCloseResolve = null;
|
|
1544
|
+
resolver(reason);
|
|
1545
|
+
};
|
|
1546
|
+
const presence = options.selfChatMode ? "unavailable" : "available";
|
|
1547
|
+
try {
|
|
1548
|
+
await createWhatsAppSocketOperationTimeoutAdapter(sock, sendOperationTimeoutMs).sendPresenceUpdate(presence);
|
|
1549
|
+
options.logVerbose(`Sent global '${presence}' presence on connect`);
|
|
1550
|
+
} catch (error) {
|
|
1551
|
+
options.logVerbose(`Failed to send '${presence}' presence on connect: ${String(error)}`);
|
|
1552
|
+
}
|
|
1553
|
+
const selfIdentity = await readWebSelfIdentityForDecision(options.authDir, sock.user);
|
|
1554
|
+
if (selfIdentity.outcome === "unstable") throw new WhatsAppAuthUnstableError("WhatsApp auth state is still stabilizing; retrying inbox attach.");
|
|
1555
|
+
const self = selfIdentity.identity;
|
|
1556
|
+
const getCurrentSock = () => {
|
|
1557
|
+
if (!options.socketRef) return sock;
|
|
1558
|
+
if (options.socketRef.current) return options.socketRef.current;
|
|
1559
|
+
if (!self.e164 && !self.jid && !self.lid) return null;
|
|
1560
|
+
const successor = getWhatsAppConnectionController(options.accountId);
|
|
1561
|
+
if (!successor) return null;
|
|
1562
|
+
const successorIdentity = successor.getSelfIdentity();
|
|
1563
|
+
if (!successorIdentity || !identitiesOverlap(self, successorIdentity)) return null;
|
|
1564
|
+
return successor.getCurrentSock();
|
|
1565
|
+
};
|
|
1566
|
+
const lidLookup = sock.signalRepository?.lidMapping;
|
|
1567
|
+
const resolveInboundJid = async (jid) => resolveJidToE164(jid, {
|
|
1568
|
+
authDir: options.authDir,
|
|
1569
|
+
lidLookup
|
|
1570
|
+
});
|
|
1571
|
+
const resolveReactionTargetJids = async (jid) => resolveEquivalentWhatsAppDirectChatJids(jid, {
|
|
1572
|
+
authDir: options.authDir,
|
|
1573
|
+
lidLookup
|
|
1574
|
+
});
|
|
1575
|
+
const rememberBaileysMessage = (remoteJid, messageId, message) => {
|
|
1576
|
+
if (!options.recentMessageKeys || !remoteJid || !messageId || !message) return;
|
|
1577
|
+
rememberWhatsAppBaileysCacheEntry(options.recentMessageKeys, `${remoteJid}:${messageId}`, message, BAILEYS_MESSAGE_TTL_MS);
|
|
1578
|
+
};
|
|
1579
|
+
const rememberOutboundMessage = (remoteJid, result) => {
|
|
1580
|
+
const messageId = typeof result === "object" && result && "key" in result ? result.key?.id ?? "" : "";
|
|
1581
|
+
if (!messageId) return;
|
|
1582
|
+
rememberRecentOutboundMessage({
|
|
1583
|
+
accountId: options.accountId,
|
|
1584
|
+
remoteJid,
|
|
1585
|
+
messageId
|
|
1486
1586
|
});
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1587
|
+
const message = typeof result === "object" && result && "message" in result ? result.message : void 0;
|
|
1588
|
+
rememberBaileysMessage(remoteJid, messageId, message);
|
|
1589
|
+
cacheInboundMessageMeta(options.accountId, remoteJid, messageId, {
|
|
1590
|
+
fromMe: true,
|
|
1591
|
+
body: extractText(message ?? void 0)
|
|
1492
1592
|
});
|
|
1493
1593
|
};
|
|
1494
|
-
const
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
const flushes = Array.from(activeInboundFlushes);
|
|
1499
|
-
if (flushes.length > 0) await Promise.allSettled(flushes);
|
|
1500
|
-
await Promise.resolve();
|
|
1501
|
-
}
|
|
1594
|
+
const trackLateAcceptedSend = (jid, promise) => {
|
|
1595
|
+
promise.then((result) => {
|
|
1596
|
+
rememberOutboundMessage(jid, result);
|
|
1597
|
+
}, () => {});
|
|
1502
1598
|
};
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1599
|
+
let reachoutTimeLock;
|
|
1600
|
+
let reachoutTimeLockFetch;
|
|
1601
|
+
let reachoutTimeLockVersion = 0;
|
|
1602
|
+
let verifiedSendReady;
|
|
1603
|
+
const rememberReachoutTimeLock = (state) => {
|
|
1604
|
+
reachoutTimeLock = state;
|
|
1605
|
+
reachoutTimeLockVersion += 1;
|
|
1606
|
+
verifiedSendReady = void 0;
|
|
1607
|
+
};
|
|
1608
|
+
const fetchReachoutTimeLock = async (currentSock) => {
|
|
1609
|
+
if (typeof currentSock.fetchAccountReachoutTimelock !== "function") return;
|
|
1610
|
+
if (!reachoutTimeLockFetch) reachoutTimeLockFetch = currentSock.fetchAccountReachoutTimelock().then((state) => {
|
|
1611
|
+
rememberReachoutTimeLock(state);
|
|
1612
|
+
return state;
|
|
1613
|
+
}).catch((error) => {
|
|
1614
|
+
options.logVerbose(`Failed fetching WhatsApp reachout timelock before send: ${formatError(error)}`);
|
|
1615
|
+
}).finally(() => {
|
|
1616
|
+
reachoutTimeLockFetch = void 0;
|
|
1617
|
+
});
|
|
1618
|
+
return await reachoutTimeLockFetch;
|
|
1619
|
+
};
|
|
1620
|
+
const rememberVerifiedSendReady = (jid, currentSock) => {
|
|
1621
|
+
verifiedSendReady = {
|
|
1622
|
+
jid,
|
|
1623
|
+
sock: currentSock,
|
|
1624
|
+
reachoutTimeLockVersion
|
|
1625
|
+
};
|
|
1626
|
+
};
|
|
1627
|
+
const consumeVerifiedSendReady = (jid, currentSock) => {
|
|
1628
|
+
if (verifiedSendReady?.jid !== jid || verifiedSendReady.sock !== currentSock || verifiedSendReady.reachoutTimeLockVersion !== reachoutTimeLockVersion) return false;
|
|
1629
|
+
verifiedSendReady = void 0;
|
|
1630
|
+
return true;
|
|
1631
|
+
};
|
|
1632
|
+
const assertCanSendToJid = async (jid, currentSock, readinessOptions) => {
|
|
1633
|
+
if (!isDirectUserJid(jid)) return;
|
|
1634
|
+
if (readinessOptions?.useVerifiedReady && consumeVerifiedSendReady(jid, currentSock)) return;
|
|
1635
|
+
const state = getActiveReachoutTimelock(reachoutTimeLock) ?? await fetchReachoutTimeLock(currentSock);
|
|
1636
|
+
const activeState = getActiveReachoutTimelock(state);
|
|
1637
|
+
if (activeState) throw new Error(formatReachoutTimelockError(activeState));
|
|
1638
|
+
if (readinessOptions?.rememberReady && state) rememberVerifiedSendReady(jid, currentSock);
|
|
1639
|
+
};
|
|
1640
|
+
const assertSendReady = async (to) => {
|
|
1641
|
+
const currentSock = getCurrentSock();
|
|
1642
|
+
if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
1643
|
+
const jid = options.authDir ? toWhatsappJidWithLid(to, { authDir: options.authDir }) : toWhatsappJid(to);
|
|
1644
|
+
await assertCanSendToJid(jid, currentSock, { rememberReady: true });
|
|
1645
|
+
};
|
|
1646
|
+
const sendTrackedMessage = async (jid, content, sendOptions) => {
|
|
1647
|
+
let lastError = /* @__PURE__ */ new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
1648
|
+
for (let attempt = 1;; attempt += 1) {
|
|
1649
|
+
const currentSock = getCurrentSock();
|
|
1650
|
+
if (currentSock) try {
|
|
1651
|
+
await assertCanSendToJid(jid, currentSock, { useVerifiedReady: true });
|
|
1652
|
+
const result = await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs, { onSendMessageTimeout: ({ jid: timedOutJid, promise }) => {
|
|
1653
|
+
trackLateAcceptedSend(timedOutJid, promise);
|
|
1654
|
+
} }).sendMessage(jid, content, sendOptions);
|
|
1655
|
+
rememberOutboundMessage(jid, result);
|
|
1656
|
+
return result;
|
|
1657
|
+
} catch (error) {
|
|
1658
|
+
if (!shouldRetryDisconnect() || !isRetryableSendDisconnectError(error)) throw error;
|
|
1659
|
+
lastError = error;
|
|
1660
|
+
if (shouldClearSocketRefAfterSendFailure(error) && options.socketRef?.current === currentSock) options.socketRef.current = null;
|
|
1661
|
+
}
|
|
1662
|
+
else if (!shouldRetryDisconnect()) throw lastError;
|
|
1663
|
+
if (attempt >= sendRetryMaxAttempts) throw lastError;
|
|
1664
|
+
const delayMs = computeBackoff(disconnectRetryPolicy, attempt);
|
|
1665
|
+
options.logVerbose(`Waiting ${delayMs}ms for WhatsApp reconnect before retrying send to ${jid}: ${formatError(lastError)}`);
|
|
1666
|
+
try {
|
|
1667
|
+
await sleepWithAbort(delayMs, options.disconnectRetryAbortSignal);
|
|
1668
|
+
} catch {
|
|
1669
|
+
throw lastError;
|
|
1670
|
+
}
|
|
1517
1671
|
}
|
|
1518
|
-
await durableInboundMonitor.stop();
|
|
1519
1672
|
};
|
|
1520
|
-
const
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
}, INBOUND_CLOSE_DRAIN_TIMEOUT_MS);
|
|
1527
|
-
timeout.unref?.();
|
|
1528
|
-
})]);
|
|
1529
|
-
} finally {
|
|
1530
|
-
if (timeout) clearTimeout(timeout);
|
|
1531
|
-
durableInboundMonitor.stop();
|
|
1673
|
+
const socketOperations = {
|
|
1674
|
+
sendMessage: (jid, content, sendOptions) => sendTrackedMessage(jid, content, sendOptions),
|
|
1675
|
+
sendPresenceUpdate: async (presenceLocal, jid) => {
|
|
1676
|
+
const currentSock = getCurrentSock();
|
|
1677
|
+
if (!currentSock) throw new Error(RECONNECT_IN_PROGRESS_ERROR);
|
|
1678
|
+
return await createWhatsAppSocketOperationTimeoutAdapter(currentSock, sendOperationTimeoutMs).sendPresenceUpdate(presenceLocal, jid);
|
|
1532
1679
|
}
|
|
1533
1680
|
};
|
|
1681
|
+
const markRead = async (target) => {
|
|
1682
|
+
const { id, remoteJid, participant } = target;
|
|
1683
|
+
await withWhatsAppSocketOperationTimeout("readMessages", (getCurrentSock() ?? sock).readMessages([{
|
|
1684
|
+
remoteJid,
|
|
1685
|
+
id,
|
|
1686
|
+
participant,
|
|
1687
|
+
fromMe: false
|
|
1688
|
+
}]), sendOperationTimeoutMs);
|
|
1689
|
+
};
|
|
1690
|
+
const attachSockListener = (event, listener) => attachEmitterListener(sock.ev, event, listener);
|
|
1534
1691
|
const handleConnectionUpdate = (update) => {
|
|
1535
1692
|
try {
|
|
1536
1693
|
if ("reachoutTimeLock" in update) rememberReachoutTimeLock(update.reachoutTimeLock);
|
|
@@ -1543,101 +1700,135 @@ async function attachWebInboxToSocket(options) {
|
|
|
1543
1700
|
error: update.lastDisconnect?.error
|
|
1544
1701
|
});
|
|
1545
1702
|
}
|
|
1546
|
-
} catch (
|
|
1547
|
-
|
|
1703
|
+
} catch (error) {
|
|
1704
|
+
options.logConnectionError(error);
|
|
1548
1705
|
resolveClose({
|
|
1549
1706
|
status: void 0,
|
|
1550
1707
|
isLoggedOut: false,
|
|
1551
|
-
error
|
|
1708
|
+
error
|
|
1552
1709
|
});
|
|
1553
1710
|
}
|
|
1554
1711
|
};
|
|
1555
|
-
|
|
1556
|
-
const
|
|
1557
|
-
|
|
1558
|
-
const isFullGroupMetadataUpdate = (update) => typeof update.id === "string" && typeof update.subject === "string" && Array.isArray(update.participants);
|
|
1559
|
-
const rememberFullGroupMetadataUpdate = (jid, meta) => {
|
|
1560
|
-
if (groupMetadataCacheClosed) return;
|
|
1561
|
-
rememberWhatsAppBaileysCacheEntry(options.baileysGroupMetaCache, jid, meta, GROUP_META_TTL_MS);
|
|
1562
|
-
publishedGroupMetadataJids.add(jid);
|
|
1563
|
-
invalidatedGroupMetadataJids.delete(jid);
|
|
1564
|
-
rememberGroupMetadataCacheEntry(groupMetadataCache, jid, summarizeGroupMetaForReconnectCache(meta));
|
|
1565
|
-
groupMetaCache.delete(jid);
|
|
1712
|
+
let detachConnectionUpdate;
|
|
1713
|
+
const start = () => {
|
|
1714
|
+
detachConnectionUpdate ??= attachSockListener("connection.update", handleConnectionUpdate);
|
|
1566
1715
|
};
|
|
1567
|
-
const
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
groupMetaCache.delete(jid);
|
|
1571
|
-
publishedGroupMetadataJids.delete(jid);
|
|
1572
|
-
invalidatedGroupMetadataJids.add(jid);
|
|
1716
|
+
const stop = () => {
|
|
1717
|
+
detachConnectionUpdate?.();
|
|
1718
|
+
detachConnectionUpdate = void 0;
|
|
1573
1719
|
};
|
|
1574
|
-
const
|
|
1575
|
-
for (const group of groups) if (group.id) rememberFullGroupMetadataUpdate(group.id, group);
|
|
1576
|
-
}));
|
|
1577
|
-
const detachGroupsUpdate = attachSockListener("groups.update", ((updates) => {
|
|
1578
|
-
for (const update of updates) {
|
|
1579
|
-
if (!update.id) continue;
|
|
1580
|
-
if (isFullGroupMetadataUpdate(update)) {
|
|
1581
|
-
rememberFullGroupMetadataUpdate(update.id, update);
|
|
1582
|
-
continue;
|
|
1583
|
-
}
|
|
1584
|
-
forgetFullGroupMetadata(update.id);
|
|
1585
|
-
}
|
|
1586
|
-
}));
|
|
1587
|
-
const detachGroupParticipantsUpdate = attachSockListener("group-participants.update", ((update) => {
|
|
1588
|
-
forgetFullGroupMetadata(update.id);
|
|
1589
|
-
}));
|
|
1590
|
-
durableInboundMonitor.start();
|
|
1591
|
-
(async () => {
|
|
1720
|
+
const closeSocket = () => {
|
|
1592
1721
|
try {
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1722
|
+
closeInboundMonitorSocket(sock);
|
|
1723
|
+
} catch (error) {
|
|
1724
|
+
options.logVerbose(`Socket close failed: ${String(error)}`);
|
|
1725
|
+
}
|
|
1726
|
+
};
|
|
1727
|
+
return {
|
|
1728
|
+
connectedAtMs,
|
|
1729
|
+
self,
|
|
1730
|
+
onClose,
|
|
1731
|
+
signalClose: (reason) => {
|
|
1732
|
+
resolveClose(reason ?? {
|
|
1733
|
+
status: void 0,
|
|
1734
|
+
isLoggedOut: false,
|
|
1735
|
+
error: "closed"
|
|
1736
|
+
});
|
|
1737
|
+
},
|
|
1738
|
+
start,
|
|
1739
|
+
stop,
|
|
1740
|
+
closeSocket,
|
|
1741
|
+
listen: attachSockListener,
|
|
1742
|
+
getCurrentSock,
|
|
1743
|
+
resolveInboundJid,
|
|
1744
|
+
resolveReactionTargetJids,
|
|
1745
|
+
rememberBaileysMessage,
|
|
1746
|
+
assertCanSendToJid,
|
|
1747
|
+
assertSendReady,
|
|
1748
|
+
sendTrackedMessage,
|
|
1749
|
+
socketOperations,
|
|
1750
|
+
markRead
|
|
1751
|
+
};
|
|
1752
|
+
}
|
|
1753
|
+
//#endregion
|
|
1754
|
+
//#region extensions/whatsapp/src/inbound/monitor.ts
|
|
1755
|
+
function logWhatsAppVerbose(enabled, message) {
|
|
1756
|
+
if (enabled) defaultRuntime.log(message);
|
|
1757
|
+
}
|
|
1758
|
+
async function attachWebInboxToSocket(options) {
|
|
1759
|
+
const inboundLogger = getChildLogger({ module: "web-inbound" });
|
|
1760
|
+
const inboundConsoleLog = createSubsystemLogger("gateway/channels/whatsapp").child("inbound");
|
|
1761
|
+
const socketSession = await createWhatsAppAttachedSocketSession({
|
|
1762
|
+
sock: options.sock,
|
|
1763
|
+
socketRef: options.socketRef,
|
|
1764
|
+
accountId: options.accountId,
|
|
1765
|
+
authDir: options.authDir,
|
|
1766
|
+
selfChatMode: options.selfChatMode,
|
|
1767
|
+
socketTiming: options.socketTiming,
|
|
1768
|
+
shouldRetryDisconnect: options.shouldRetryDisconnect,
|
|
1769
|
+
disconnectRetryPolicy: options.disconnectRetryPolicy,
|
|
1770
|
+
disconnectRetryAbortSignal: options.disconnectRetryAbortSignal,
|
|
1771
|
+
recentMessageKeys: options.recentMessageKeys,
|
|
1772
|
+
logVerbose: (message) => logWhatsAppVerbose(options.verbose, message),
|
|
1773
|
+
logConnectionError: (error) => {
|
|
1774
|
+
inboundLogger.error({ error: String(error) }, "connection.update handler error");
|
|
1775
|
+
}
|
|
1776
|
+
});
|
|
1777
|
+
const groupMetadata = createWhatsAppGroupMetadataCacheOwner({
|
|
1778
|
+
sock: options.sock,
|
|
1779
|
+
getCurrentSock: socketSession.getCurrentSock,
|
|
1780
|
+
resolveInboundJid: socketSession.resolveInboundJid,
|
|
1781
|
+
reconnectCache: options.groupMetadataCache,
|
|
1782
|
+
baileysCache: options.baileysGroupMetaCache,
|
|
1783
|
+
listen: socketSession.listen,
|
|
1784
|
+
logVerbose: (message) => logWhatsAppVerbose(options.verbose, message),
|
|
1785
|
+
logHydrationWarning: (error) => {
|
|
1603
1786
|
inboundLogger.warn({ error }, "failed hydrating participating groups on connect");
|
|
1604
1787
|
inboundConsoleLog.warn(`Failed hydrating participating groups on connect: ${error}`);
|
|
1605
|
-
logWhatsAppVerbose(options.verbose, `Failed to hydrate participating groups on connect: ${error}`);
|
|
1606
1788
|
}
|
|
1607
|
-
})
|
|
1789
|
+
});
|
|
1790
|
+
const delivery = createWhatsAppMessageDeliveryCoordinator({
|
|
1791
|
+
cfg: options.cfg,
|
|
1792
|
+
loadConfig: options.loadConfig,
|
|
1793
|
+
verbose: options.verbose,
|
|
1794
|
+
accountId: options.accountId,
|
|
1795
|
+
sock: options.sock,
|
|
1796
|
+
socketSession,
|
|
1797
|
+
groupMetadata,
|
|
1798
|
+
onMessage: options.onMessage,
|
|
1799
|
+
mediaMaxMb: options.mediaMaxMb,
|
|
1800
|
+
sendReadReceipts: options.sendReadReceipts,
|
|
1801
|
+
debounceMs: options.debounceMs,
|
|
1802
|
+
appendReplyWindow: options.appendReplyWindow,
|
|
1803
|
+
shouldDebounce: options.shouldDebounce,
|
|
1804
|
+
onPendingWorkChanged: options.onPendingWorkChanged,
|
|
1805
|
+
durableInboundQueue: options.durableInboundQueue ?? createWhatsAppDurableInboundQueue(options.accountId)
|
|
1806
|
+
});
|
|
1608
1807
|
const sendApi = createWebSendApi({
|
|
1609
|
-
sock:
|
|
1808
|
+
sock: socketSession.socketOperations,
|
|
1610
1809
|
defaultAccountId: options.accountId,
|
|
1611
|
-
resolveOutboundMentions: ({ jid, text }) =>
|
|
1810
|
+
resolveOutboundMentions: ({ jid, text }) => groupMetadata.resolveOutboundMentions(jid, text),
|
|
1612
1811
|
authDir: options.authDir
|
|
1613
1812
|
});
|
|
1813
|
+
delivery.start();
|
|
1814
|
+
socketSession.start();
|
|
1815
|
+
groupMetadata.start();
|
|
1614
1816
|
return {
|
|
1615
1817
|
close: async () => {
|
|
1818
|
+
delivery.stopIntake();
|
|
1819
|
+
socketSession.stop();
|
|
1820
|
+
groupMetadata.close();
|
|
1616
1821
|
try {
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
await drainInboundBeforeSocketCloseWithTimeout();
|
|
1623
|
-
} catch (err) {
|
|
1624
|
-
logWhatsAppVerbose(options.verbose, `Inbound close drain failed: ${String(err)}`);
|
|
1625
|
-
}
|
|
1626
|
-
try {
|
|
1627
|
-
closeInboundMonitorSocket(sock);
|
|
1628
|
-
} catch (err) {
|
|
1629
|
-
logWhatsAppVerbose(options.verbose, `Socket close failed: ${String(err)}`);
|
|
1822
|
+
await delivery.drain();
|
|
1823
|
+
} catch (error) {
|
|
1824
|
+
logWhatsAppVerbose(options.verbose, `Inbound close drain failed: ${String(error)}`);
|
|
1825
|
+
} finally {
|
|
1826
|
+
socketSession.closeSocket();
|
|
1630
1827
|
}
|
|
1631
1828
|
},
|
|
1632
|
-
onClose,
|
|
1633
|
-
signalClose:
|
|
1634
|
-
|
|
1635
|
-
status: void 0,
|
|
1636
|
-
isLoggedOut: false,
|
|
1637
|
-
error: "closed"
|
|
1638
|
-
});
|
|
1639
|
-
},
|
|
1640
|
-
assertSendReady: assertCanSendTo,
|
|
1829
|
+
onClose: socketSession.onClose,
|
|
1830
|
+
signalClose: socketSession.signalClose,
|
|
1831
|
+
assertSendReady: socketSession.assertSendReady,
|
|
1641
1832
|
sendComposingTo: sendApi.sendComposingTo,
|
|
1642
1833
|
sendMessage: sendApi.sendMessage,
|
|
1643
1834
|
sendPoll: sendApi.sendPoll,
|
|
@@ -1659,18 +1850,16 @@ async function monitorWebInbox(options) {
|
|
|
1659
1850
|
});
|
|
1660
1851
|
try {
|
|
1661
1852
|
await waitForWaConnection(sock, { timeoutMs: socketTiming.connectTimeoutMs });
|
|
1662
|
-
} catch (
|
|
1853
|
+
} catch (error) {
|
|
1663
1854
|
closeInboundMonitorSocket(sock);
|
|
1664
|
-
throw
|
|
1855
|
+
throw error;
|
|
1665
1856
|
}
|
|
1666
|
-
const shouldDebounce = options.shouldDebounce;
|
|
1667
|
-
const normalizeAdmittedWebInboundMessage = (msg) => requireAdmittedWhatsAppInboundMessage(normalizeWebInboundMessage(msg));
|
|
1668
1857
|
return attachWebInboxToSocket({
|
|
1669
1858
|
...options,
|
|
1670
1859
|
onMessage: async (msg) => {
|
|
1671
1860
|
await options.onMessage(normalizeAdmittedWebInboundMessage(msg));
|
|
1672
1861
|
},
|
|
1673
|
-
shouldDebounce: shouldDebounce ? (msg) => shouldDebounce(normalizeAdmittedWebInboundMessage(msg)) : void 0,
|
|
1862
|
+
shouldDebounce: options.shouldDebounce ? (msg) => options.shouldDebounce?.(normalizeAdmittedWebInboundMessage(msg)) ?? true : void 0,
|
|
1674
1863
|
socketTiming,
|
|
1675
1864
|
sock,
|
|
1676
1865
|
recentMessageKeys,
|
|
@@ -1848,6 +2037,7 @@ function createEchoTracker(params) {
|
|
|
1848
2037
|
const recentlySent = /* @__PURE__ */ new Set();
|
|
1849
2038
|
const maxItems = Math.max(1, params.maxItems ?? 100);
|
|
1850
2039
|
const buildCombinedKey = (p) => `combined:${p.sessionKey}:${p.combinedBody}`;
|
|
2040
|
+
const buildTextKey = (text, conversationId) => conversationId ? `${conversationId}\0${text}` : text;
|
|
1851
2041
|
const trim = () => {
|
|
1852
2042
|
while (recentlySent.size > maxItems) {
|
|
1853
2043
|
const firstKey = recentlySent.values().next().value;
|
|
@@ -1857,7 +2047,7 @@ function createEchoTracker(params) {
|
|
|
1857
2047
|
};
|
|
1858
2048
|
const rememberText = (text, opts) => {
|
|
1859
2049
|
if (!text) return;
|
|
1860
|
-
recentlySent.add(text);
|
|
2050
|
+
recentlySent.add(buildTextKey(text, opts.conversationId));
|
|
1861
2051
|
if (opts.combinedBody && opts.combinedBodySessionKey) recentlySent.add(buildCombinedKey({
|
|
1862
2052
|
sessionKey: opts.combinedBodySessionKey,
|
|
1863
2053
|
combinedBody: opts.combinedBody
|
|
@@ -1867,9 +2057,9 @@ function createEchoTracker(params) {
|
|
|
1867
2057
|
};
|
|
1868
2058
|
return {
|
|
1869
2059
|
rememberText,
|
|
1870
|
-
has: (key) => recentlySent.has(key),
|
|
1871
|
-
forget: (key) => {
|
|
1872
|
-
recentlySent.delete(key);
|
|
2060
|
+
has: (key, conversationId) => recentlySent.has(buildTextKey(key, conversationId)),
|
|
2061
|
+
forget: (key, conversationId) => {
|
|
2062
|
+
recentlySent.delete(buildTextKey(key, conversationId));
|
|
1873
2063
|
},
|
|
1874
2064
|
buildCombinedKey
|
|
1875
2065
|
};
|
|
@@ -2465,6 +2655,20 @@ function isLikelyWhatsAppCryptoError(reason) {
|
|
|
2465
2655
|
}
|
|
2466
2656
|
//#endregion
|
|
2467
2657
|
//#region extensions/whatsapp/src/auto-reply/deliver-reply.ts
|
|
2658
|
+
function createWhatsAppReplyTransportContext(msg) {
|
|
2659
|
+
const admission = requireWhatsAppInboundAdmission(msg);
|
|
2660
|
+
return {
|
|
2661
|
+
accountId: admission.accountId,
|
|
2662
|
+
conversationId: admission.conversation.id,
|
|
2663
|
+
conversationKind: admission.conversation.kind,
|
|
2664
|
+
chatJid: msg.platform.chatJid,
|
|
2665
|
+
senderJid: msg.platform.senderJid,
|
|
2666
|
+
recipientJid: msg.platform.recipientJid,
|
|
2667
|
+
correlationId: msg.event.id,
|
|
2668
|
+
reply: msg.platform.reply,
|
|
2669
|
+
sendMedia: msg.platform.sendMedia
|
|
2670
|
+
};
|
|
2671
|
+
}
|
|
2468
2672
|
function resolveWhatsAppReceiptKind(results) {
|
|
2469
2673
|
if (results.length > 0 && results.every((result) => result.kind === "text")) return "text";
|
|
2470
2674
|
if (results.length > 0 && results.every((result) => result.kind === "media")) return "media";
|
|
@@ -2502,10 +2706,9 @@ function createWhatsAppReplyDeliveryReceipt(results) {
|
|
|
2502
2706
|
});
|
|
2503
2707
|
}
|
|
2504
2708
|
async function deliverWebReply(params) {
|
|
2505
|
-
const { replyResult,
|
|
2506
|
-
const
|
|
2507
|
-
const
|
|
2508
|
-
const isGroupConversation = admission.conversation.kind === "group";
|
|
2709
|
+
const { replyResult, transport, maxMediaBytes, textLimit, replyLogger, connectionId, skipLog } = params;
|
|
2710
|
+
const conversationId = transport.conversationId;
|
|
2711
|
+
const isGroupConversation = transport.conversationKind === "group";
|
|
2509
2712
|
const replyStarted = Date.now();
|
|
2510
2713
|
const sendResults = [];
|
|
2511
2714
|
const rememberSendResult = (result) => {
|
|
@@ -2530,12 +2733,12 @@ async function deliverWebReply(params) {
|
|
|
2530
2733
|
const mediaList = normalizedReply.mediaUrls ?? [];
|
|
2531
2734
|
const getQuote = () => {
|
|
2532
2735
|
if (!replyResult.replyToId) return;
|
|
2533
|
-
const cached = lookupInboundMessageMeta(
|
|
2736
|
+
const cached = lookupInboundMessageMeta(transport.accountId, transport.chatJid, replyResult.replyToId);
|
|
2534
2737
|
return buildQuotedMessageOptions({
|
|
2535
2738
|
messageId: replyResult.replyToId,
|
|
2536
|
-
remoteJid:
|
|
2739
|
+
remoteJid: transport.chatJid,
|
|
2537
2740
|
fromMe: cached?.fromMe ?? false,
|
|
2538
|
-
participant: cached?.participant ?? (isGroupConversation ?
|
|
2741
|
+
participant: cached?.participant ?? (isGroupConversation ? transport.senderJid : void 0),
|
|
2539
2742
|
messageText: cached?.body ?? "",
|
|
2540
2743
|
media: cached?.media
|
|
2541
2744
|
});
|
|
@@ -2558,7 +2761,7 @@ async function deliverWebReply(params) {
|
|
|
2558
2761
|
for (const [index, chunk] of textChunks.entries()) {
|
|
2559
2762
|
const chunkStarted = Date.now();
|
|
2560
2763
|
const quote = getQuote();
|
|
2561
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2764
|
+
rememberSendResult(await sendWithRetry(() => transport.reply(chunk, quote), "text"));
|
|
2562
2765
|
if (!skipLog) {
|
|
2563
2766
|
const durationMs = Date.now() - chunkStarted;
|
|
2564
2767
|
whatsappOutboundLog.debug(`Sent chunk ${index + 1}/${totalChunks} to ${conversationId} (${durationMs.toFixed(0)}ms)`);
|
|
@@ -2566,10 +2769,10 @@ async function deliverWebReply(params) {
|
|
|
2566
2769
|
}
|
|
2567
2770
|
const delivery = finishDelivery();
|
|
2568
2771
|
const logPayload = {
|
|
2569
|
-
correlationId:
|
|
2772
|
+
correlationId: transport.correlationId ?? newConnectionId(),
|
|
2570
2773
|
connectionId: connectionId ?? null,
|
|
2571
2774
|
to: conversationId,
|
|
2572
|
-
from:
|
|
2775
|
+
from: transport.recipientJid,
|
|
2573
2776
|
text: elide(replyResult.text, 240),
|
|
2574
2777
|
mediaUrl: null,
|
|
2575
2778
|
mediaSizeBytes: null,
|
|
@@ -2595,29 +2798,29 @@ async function deliverWebReply(params) {
|
|
|
2595
2798
|
}
|
|
2596
2799
|
if (media.kind === "image") {
|
|
2597
2800
|
const quote = getQuote();
|
|
2598
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2801
|
+
rememberSendResult(await sendWithRetry(() => transport.sendMedia({
|
|
2599
2802
|
image: media.buffer,
|
|
2600
2803
|
caption,
|
|
2601
2804
|
mimetype: media.mimetype
|
|
2602
2805
|
}, quote), "media:image"));
|
|
2603
2806
|
} else if (media.kind === "audio") {
|
|
2604
2807
|
const quote = getQuote();
|
|
2605
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2808
|
+
rememberSendResult(await sendWithRetry(() => transport.sendMedia({
|
|
2606
2809
|
audio: media.buffer,
|
|
2607
2810
|
ptt: true,
|
|
2608
2811
|
mimetype: media.mimetype
|
|
2609
2812
|
}, quote), "media:audio"));
|
|
2610
|
-
if (caption) rememberSendResult(await sendWithRetry(() =>
|
|
2813
|
+
if (caption) rememberSendResult(await sendWithRetry(() => transport.reply(caption, quote), "media:audio-text"));
|
|
2611
2814
|
} else if (media.kind === "video") {
|
|
2612
2815
|
const quote = getQuote();
|
|
2613
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2816
|
+
rememberSendResult(await sendWithRetry(() => transport.sendMedia({
|
|
2614
2817
|
video: media.buffer,
|
|
2615
2818
|
caption,
|
|
2616
2819
|
mimetype: media.mimetype
|
|
2617
2820
|
}, quote), "media:video"));
|
|
2618
2821
|
} else {
|
|
2619
2822
|
const quote = getQuote();
|
|
2620
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2823
|
+
rememberSendResult(await sendWithRetry(() => transport.sendMedia({
|
|
2621
2824
|
document: media.buffer,
|
|
2622
2825
|
fileName: media.fileName,
|
|
2623
2826
|
caption,
|
|
@@ -2626,10 +2829,10 @@ async function deliverWebReply(params) {
|
|
|
2626
2829
|
}
|
|
2627
2830
|
whatsappOutboundLog.info(`Sent media reply to ${conversationId} (${(media.buffer.length / (1024 * 1024)).toFixed(2)}MB)`);
|
|
2628
2831
|
replyLogger.info({
|
|
2629
|
-
correlationId:
|
|
2832
|
+
correlationId: transport.correlationId ?? newConnectionId(),
|
|
2630
2833
|
connectionId: connectionId ?? null,
|
|
2631
2834
|
to: conversationId,
|
|
2632
|
-
from:
|
|
2835
|
+
from: transport.recipientJid,
|
|
2633
2836
|
text: caption ?? null,
|
|
2634
2837
|
mediaUrl,
|
|
2635
2838
|
mediaSizeBytes: media.buffer.length,
|
|
@@ -2645,16 +2848,16 @@ async function deliverWebReply(params) {
|
|
|
2645
2848
|
}, "failed to send web media reply");
|
|
2646
2849
|
if (!isFirst) {
|
|
2647
2850
|
whatsappOutboundLog.warn(`Trailing media failed; sent warning to ${conversationId}`);
|
|
2648
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2851
|
+
rememberSendResult(await sendWithRetry(() => transport.reply("⚠️ Media unavailable.", getQuote()), "media:fallback-unavailable"));
|
|
2649
2852
|
return;
|
|
2650
2853
|
}
|
|
2651
2854
|
const fallbackText = [caption ?? "", "⚠️ Media failed."].filter(Boolean).join("\n");
|
|
2652
2855
|
if (!fallbackText) return;
|
|
2653
2856
|
whatsappOutboundLog.warn(`Media skipped; sent text-only to ${conversationId}`);
|
|
2654
|
-
rememberSendResult(await sendWithRetry(() =>
|
|
2857
|
+
rememberSendResult(await sendWithRetry(() => transport.reply(fallbackText, getQuote()), "media:fallback-text"));
|
|
2655
2858
|
}
|
|
2656
2859
|
});
|
|
2657
|
-
for (const chunk of remainingText) rememberSendResult(await sendWithRetry(() =>
|
|
2860
|
+
for (const chunk of remainingText) rememberSendResult(await sendWithRetry(() => transport.reply(chunk, getQuote()), "media:text"));
|
|
2658
2861
|
return finishDelivery();
|
|
2659
2862
|
}
|
|
2660
2863
|
//#endregion
|
|
@@ -2715,6 +2918,65 @@ function resolveVisibleWhatsAppReplyContext(params) {
|
|
|
2715
2918
|
} : null;
|
|
2716
2919
|
}
|
|
2717
2920
|
//#endregion
|
|
2921
|
+
//#region extensions/whatsapp/src/auto-reply/monitor/prepared-inbound.ts
|
|
2922
|
+
function resolvePreparedCommandFacts(command) {
|
|
2923
|
+
if (!command) return;
|
|
2924
|
+
const { authorization, ...facts } = command;
|
|
2925
|
+
return {
|
|
2926
|
+
...facts,
|
|
2927
|
+
...authorization.kind === "not_checked" ? {} : { authorized: authorization.kind === "authorized" }
|
|
2928
|
+
};
|
|
2929
|
+
}
|
|
2930
|
+
function projectPreparedChannelInbound(params) {
|
|
2931
|
+
const { inbound, control } = params;
|
|
2932
|
+
const command = resolvePreparedCommandFacts(inbound.command);
|
|
2933
|
+
const commandAuthorization = inbound.command?.authorization;
|
|
2934
|
+
const commandAccess = commandAuthorization && commandAuthorization.kind !== "not_checked" ? { authorized: commandAuthorization.kind === "authorized" } : void 0;
|
|
2935
|
+
return {
|
|
2936
|
+
input: {
|
|
2937
|
+
id: inbound.event.id,
|
|
2938
|
+
timestamp: inbound.event.timestamp,
|
|
2939
|
+
rawText: inbound.message.rawBody,
|
|
2940
|
+
textForAgent: inbound.message.bodyForAgent,
|
|
2941
|
+
textForCommands: inbound.message.commandBody,
|
|
2942
|
+
raw: inbound
|
|
2943
|
+
},
|
|
2944
|
+
context: buildChannelInboundEventContext({
|
|
2945
|
+
...inbound,
|
|
2946
|
+
messageId: inbound.event.id,
|
|
2947
|
+
messageIdFull: inbound.event.fullId,
|
|
2948
|
+
timestamp: inbound.event.timestamp,
|
|
2949
|
+
command,
|
|
2950
|
+
access: inbound.mentions || commandAccess ? {
|
|
2951
|
+
mentions: inbound.mentions,
|
|
2952
|
+
commands: commandAccess
|
|
2953
|
+
} : void 0,
|
|
2954
|
+
extra: {
|
|
2955
|
+
Transcript: inbound.context?.transcript,
|
|
2956
|
+
...inbound.context && "groupSubject" in inbound.context ? { GroupSubject: inbound.context.groupSubject ?? void 0 } : {},
|
|
2957
|
+
GroupMembers: inbound.context?.groupMembers,
|
|
2958
|
+
SenderE164: inbound.context?.senderE164,
|
|
2959
|
+
ReplyThreading: inbound.context?.replyThreading,
|
|
2960
|
+
SuppressMessageReceivedHooks: control.messageReceivedHooks === "channel",
|
|
2961
|
+
...inbound.context?.location ? toLocationContext(inbound.context.location) : {}
|
|
2962
|
+
}
|
|
2963
|
+
})
|
|
2964
|
+
};
|
|
2965
|
+
}
|
|
2966
|
+
/** Keeps WhatsApp reply-policy mapping beside the transport that applies it. */
|
|
2967
|
+
function resolveWhatsAppInboundReplyPolicy(params) {
|
|
2968
|
+
const sourceReplyDeliveryMode = params.ctx.ChatType === "group" || params.ctx.ChatType === "channel" ? resolveChannelMessageSourceReplyDeliveryMode({
|
|
2969
|
+
cfg: params.cfg,
|
|
2970
|
+
ctx: params.ctx
|
|
2971
|
+
}) : void 0;
|
|
2972
|
+
const sourceRepliesAreToolOnly = sourceReplyDeliveryMode === "message_tool_only";
|
|
2973
|
+
return {
|
|
2974
|
+
sourceReplyDeliveryMode,
|
|
2975
|
+
disableBlockStreaming: sourceRepliesAreToolOnly ? true : typeof params.blockStreamingEnabled === "boolean" ? !params.blockStreamingEnabled : void 0,
|
|
2976
|
+
suppressTyping: sourceRepliesAreToolOnly && params.ctx.ChatType === "group" && params.ctx.WasMentioned !== true
|
|
2977
|
+
};
|
|
2978
|
+
}
|
|
2979
|
+
//#endregion
|
|
2718
2980
|
//#region extensions/whatsapp/src/auto-reply/monitor/inbound-dispatch.ts
|
|
2719
2981
|
function normalizeErrForLog(err) {
|
|
2720
2982
|
if (err instanceof Error) return {
|
|
@@ -2728,6 +2990,15 @@ function normalizeErrForLog(err) {
|
|
|
2728
2990
|
function whatsAppReplyDeliveryVisibility(visibleReplySent) {
|
|
2729
2991
|
return { visibleReplySent };
|
|
2730
2992
|
}
|
|
2993
|
+
function createWhatsAppChannelDeliveryResult(params) {
|
|
2994
|
+
const messageIds = listMessageReceiptPlatformIds(params.delivery.receipt);
|
|
2995
|
+
return {
|
|
2996
|
+
receipt: params.delivery.receipt,
|
|
2997
|
+
...messageIds.length > 0 ? { messageIds } : {},
|
|
2998
|
+
content: params.content,
|
|
2999
|
+
visibleReplySent: params.delivery.providerAccepted
|
|
3000
|
+
};
|
|
3001
|
+
}
|
|
2731
3002
|
function isWhatsAppVisibleDeliveryError(error) {
|
|
2732
3003
|
return typeof error === "object" && error !== null && !Array.isArray(error) && error.visibleReplySent === true || isChannelPartialDeliveryError(error) && error.deliveryResult.visibleReplySent;
|
|
2733
3004
|
}
|
|
@@ -2740,16 +3011,15 @@ function markWhatsAppReplyDeliveryErrorVisibleAfterFlush(error, flushResult) {
|
|
|
2740
3011
|
return markWhatsAppVisibleDeliveryError(new Error("deferred WhatsApp media delivery failed after an earlier visible send", { cause: error }));
|
|
2741
3012
|
}
|
|
2742
3013
|
function logWhatsAppReplyDeliveryError(params) {
|
|
2743
|
-
const admission = requireWhatsAppInboundAdmission(params.msg);
|
|
2744
3014
|
params.replyLogger.error({
|
|
2745
3015
|
err: normalizeErrForLog(params.err),
|
|
2746
3016
|
replyKind: params.info.kind,
|
|
2747
|
-
correlationId: params.
|
|
3017
|
+
correlationId: params.transport.correlationId ?? null,
|
|
2748
3018
|
connectionId: params.connectionId,
|
|
2749
|
-
conversationId:
|
|
2750
|
-
chatId: params.
|
|
2751
|
-
to:
|
|
2752
|
-
from: params.
|
|
3019
|
+
conversationId: params.transport.conversationId,
|
|
3020
|
+
chatId: params.transport.chatJid,
|
|
3021
|
+
to: params.transport.conversationId,
|
|
3022
|
+
from: params.transport.recipientJid
|
|
2753
3023
|
}, "auto-reply delivery failed");
|
|
2754
3024
|
}
|
|
2755
3025
|
function resolveWhatsAppDurableReplyToId(params) {
|
|
@@ -2757,14 +3027,10 @@ function resolveWhatsAppDurableReplyToId(params) {
|
|
|
2757
3027
|
const explicitPayloadReplyToId = readTrimmedString(params.payload.replyToId);
|
|
2758
3028
|
if (explicitPayloadReplyToId) return explicitPayloadReplyToId;
|
|
2759
3029
|
const hasVisibleInboundReplyTarget = Boolean(readTrimmedString(params.context.ReplyToId)) || Boolean(readTrimmedString(params.context.ReplyToIdFull));
|
|
2760
|
-
const currentInboundMessageId = readTrimmedString(params.
|
|
3030
|
+
const currentInboundMessageId = readTrimmedString(params.currentMessageId);
|
|
2761
3031
|
if (params.info.kind === "final" && hasVisibleInboundReplyTarget && currentInboundMessageId) return currentInboundMessageId;
|
|
2762
3032
|
return null;
|
|
2763
3033
|
}
|
|
2764
|
-
function resolveWhatsAppDisableBlockStreaming(cfg) {
|
|
2765
|
-
const enabled = resolveChannelStreamingBlockEnabled(cfg.channels?.whatsapp);
|
|
2766
|
-
return typeof enabled === "boolean" ? !enabled : void 0;
|
|
2767
|
-
}
|
|
2768
3034
|
function resolveWhatsAppDeliverablePayload(payload, info) {
|
|
2769
3035
|
if (payload.isReasoning === true || payload.isCompactionNotice === true) return null;
|
|
2770
3036
|
if (payload.isError === true) return null;
|
|
@@ -2852,7 +3118,13 @@ function resolveWhatsAppResponsePrefix(params) {
|
|
|
2852
3118
|
const configuredResponsePrefix = params.cfg.messages?.responsePrefix;
|
|
2853
3119
|
return params.pipelineResponsePrefix ?? (configuredResponsePrefix === "auto" ? resolveIdentityNamePrefix$1(params.cfg, params.agentId) : configuredResponsePrefix) ?? (params.isSelfChat ? resolveIdentityNamePrefix$1(params.cfg, params.agentId) : void 0);
|
|
2854
3120
|
}
|
|
2855
|
-
|
|
3121
|
+
function buildWhatsAppInboundTransportContext(msg) {
|
|
3122
|
+
return {
|
|
3123
|
+
...createWhatsAppReplyTransportContext(msg),
|
|
3124
|
+
sendComposing: msg.platform.sendComposing
|
|
3125
|
+
};
|
|
3126
|
+
}
|
|
3127
|
+
async function prepareWhatsAppInboundContext(params) {
|
|
2856
3128
|
const admission = requireWhatsAppInboundAdmission(params.msg);
|
|
2857
3129
|
const conversationId = admission.conversation.id;
|
|
2858
3130
|
const conversationKind = admission.conversation.kind;
|
|
@@ -2867,13 +3139,14 @@ async function buildWhatsAppInboundContext(params) {
|
|
|
2867
3139
|
})),
|
|
2868
3140
|
limit: params.groupHistory?.length ?? 1
|
|
2869
3141
|
}) : void 0;
|
|
2870
|
-
const media =
|
|
3142
|
+
const media = await toInboundMediaFactsWithMetadata(params.msg.payload.media ? [{
|
|
2871
3143
|
path: params.msg.payload.media?.path,
|
|
2872
3144
|
url: params.msg.payload.media?.url ?? params.msg.payload.media?.path,
|
|
2873
3145
|
contentType: params.msg.payload.media?.type,
|
|
2874
3146
|
kind: params.msg.payload.media?.kind
|
|
2875
3147
|
}] : void 0, { transcribed: (_entry, index) => params.mediaTranscribedIndexes?.includes(index) === true });
|
|
2876
|
-
|
|
3148
|
+
const control = { messageReceivedHooks: params.suppressMessageReceivedHooks ? "channel" : "core" };
|
|
3149
|
+
const inbound = {
|
|
2877
3150
|
channel: "whatsapp",
|
|
2878
3151
|
supplemental: {
|
|
2879
3152
|
quote: params.visibleReplyTo ? {
|
|
@@ -2885,8 +3158,10 @@ async function buildWhatsAppInboundContext(params) {
|
|
|
2885
3158
|
channelStructuredContext: params.msg.payload.channelStructuredContext
|
|
2886
3159
|
},
|
|
2887
3160
|
media,
|
|
2888
|
-
|
|
2889
|
-
|
|
3161
|
+
event: {
|
|
3162
|
+
id: params.msg.event.id ?? `${conversationId}:${newConnectionId()}`,
|
|
3163
|
+
timestamp: params.msg.event.timestamp
|
|
3164
|
+
},
|
|
2890
3165
|
from: conversationId,
|
|
2891
3166
|
sender: {
|
|
2892
3167
|
id: params.sender.id ?? params.sender.e164,
|
|
@@ -2905,7 +3180,8 @@ async function buildWhatsAppInboundContext(params) {
|
|
|
2905
3180
|
},
|
|
2906
3181
|
reply: {
|
|
2907
3182
|
to: params.msg.platform.recipientJid,
|
|
2908
|
-
originatingTo: conversationId
|
|
3183
|
+
originatingTo: conversationId,
|
|
3184
|
+
replyToId: params.visibleReplyTo?.id
|
|
2909
3185
|
},
|
|
2910
3186
|
message: {
|
|
2911
3187
|
body: params.combinedBody,
|
|
@@ -2915,29 +3191,35 @@ async function buildWhatsAppInboundContext(params) {
|
|
|
2915
3191
|
commandBody: params.command?.body ?? params.msg.payload.body
|
|
2916
3192
|
},
|
|
2917
3193
|
sessionTranscript: { historyLimit: conversationKind === "group" ? params.groupHistoryLimit ?? params.groupHistory?.length ?? 0 : 0 },
|
|
2918
|
-
|
|
2919
|
-
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
} } : {},
|
|
2924
|
-
commands: { authorized: params.command?.authorized === true }
|
|
2925
|
-
},
|
|
3194
|
+
mentions: wasMentioned !== void 0 ? {
|
|
3195
|
+
canDetectMention: conversationKind === "group",
|
|
3196
|
+
wasMentioned,
|
|
3197
|
+
requireMention: params.msg.groupMention?.requireMention
|
|
3198
|
+
} : void 0,
|
|
2926
3199
|
command: params.command,
|
|
2927
|
-
|
|
2928
|
-
|
|
2929
|
-
|
|
2930
|
-
|
|
3200
|
+
context: {
|
|
3201
|
+
transcript: params.transcript,
|
|
3202
|
+
groupSubject: params.msg.group?.subject ?? null,
|
|
3203
|
+
groupMembers: formatGroupMembers({
|
|
2931
3204
|
participants: params.msg.group?.participants,
|
|
2932
3205
|
roster: params.groupMemberRoster,
|
|
2933
3206
|
fallbackE164: params.sender.e164
|
|
2934
3207
|
}),
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
...params.msg.payload.location ? toLocationContext(params.msg.payload.location) : {}
|
|
3208
|
+
senderE164: params.sender.e164,
|
|
3209
|
+
replyThreading: params.replyThreading,
|
|
3210
|
+
location: params.msg.payload.location
|
|
2939
3211
|
}
|
|
3212
|
+
};
|
|
3213
|
+
const projected = projectPreparedChannelInbound({
|
|
3214
|
+
inbound,
|
|
3215
|
+
control
|
|
2940
3216
|
});
|
|
3217
|
+
return {
|
|
3218
|
+
inbound,
|
|
3219
|
+
control,
|
|
3220
|
+
turnInput: projected.input,
|
|
3221
|
+
ctxPayload: projected.context
|
|
3222
|
+
};
|
|
2941
3223
|
}
|
|
2942
3224
|
function resolveWhatsAppDmRouteTarget(params) {
|
|
2943
3225
|
const admission = requireWhatsAppInboundAdmission(params.msg);
|
|
@@ -2970,10 +3252,7 @@ function updateWhatsAppMainLastRoute(params) {
|
|
|
2970
3252
|
if (params.dmRouteTarget && inboundLastRouteSessionKey === params.route.mainSessionKey && params.pinnedMainDmRecipient) logVerbose$1(`Skipping main-session last route update for ${params.dmRouteTarget} (pinned owner ${params.pinnedMainDmRecipient})`);
|
|
2971
3253
|
}
|
|
2972
3254
|
function createWhatsAppReplyPlan(params) {
|
|
2973
|
-
const
|
|
2974
|
-
const ingressLifecycle = resolveWhatsAppIngressLifecycle(params.msg);
|
|
2975
|
-
const conversationId = admission.conversation.id;
|
|
2976
|
-
const conversationKind = admission.conversation.kind;
|
|
3255
|
+
const conversationId = params.inbound.conversation.id;
|
|
2977
3256
|
const statusReactionController = params.statusReactionController ?? null;
|
|
2978
3257
|
const textLimit = params.maxMediaTextChunkLimit ?? resolveTextChunkLimit(params.cfg, "whatsapp");
|
|
2979
3258
|
const chunkMode = resolveChunkMode(params.cfg, "whatsapp", params.route.accountId);
|
|
@@ -2983,12 +3262,11 @@ function createWhatsAppReplyPlan(params) {
|
|
|
2983
3262
|
accountId: params.route.accountId
|
|
2984
3263
|
});
|
|
2985
3264
|
const mediaLocalRoots = getAgentScopedMediaLocalRoots(params.cfg, params.route.agentId);
|
|
2986
|
-
const
|
|
3265
|
+
const replyPolicy = resolveWhatsAppInboundReplyPolicy({
|
|
2987
3266
|
cfg: params.cfg,
|
|
2988
|
-
ctx: params.context
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
const disableBlockStreaming = sourceRepliesAreToolOnly ? true : resolveWhatsAppDisableBlockStreaming(params.cfg);
|
|
3267
|
+
ctx: params.context,
|
|
3268
|
+
blockStreamingEnabled: resolveChannelStreamingBlockEnabled(params.cfg.channels?.whatsapp)
|
|
3269
|
+
});
|
|
2992
3270
|
let didSendReply = false;
|
|
2993
3271
|
let didLogHeartbeatStrip = false;
|
|
2994
3272
|
const recordDeliveredPayload = (payload) => {
|
|
@@ -2997,6 +3275,7 @@ function createWhatsAppReplyPlan(params) {
|
|
|
2997
3275
|
params.rememberSentText(payload.text, {
|
|
2998
3276
|
combinedBody: params.context.Body,
|
|
2999
3277
|
combinedBodySessionKey: params.route.sessionKey,
|
|
3278
|
+
conversationId,
|
|
3000
3279
|
logVerboseMessage: shouldLog
|
|
3001
3280
|
});
|
|
3002
3281
|
if (shouldLogVerbose$1()) {
|
|
@@ -3007,36 +3286,53 @@ function createWhatsAppReplyPlan(params) {
|
|
|
3007
3286
|
const deliverNormalizedPayload = async (normalizedDeliveryPayload, info, options) => {
|
|
3008
3287
|
const reply = resolveSendableOutboundReplyParts(normalizedDeliveryPayload);
|
|
3009
3288
|
if (!reply.hasMedia && !reply.text.trim()) return whatsAppReplyDeliveryVisibility(false);
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3289
|
+
let delivery;
|
|
3290
|
+
try {
|
|
3291
|
+
delivery = await params.deliverReply({
|
|
3292
|
+
replyResult: normalizedDeliveryPayload,
|
|
3293
|
+
normalizedReplyResult: normalizedDeliveryPayload,
|
|
3294
|
+
transport: params.transport,
|
|
3295
|
+
mediaLocalRoots,
|
|
3296
|
+
maxMediaBytes: params.maxMediaBytes,
|
|
3297
|
+
textLimit,
|
|
3298
|
+
chunkMode,
|
|
3299
|
+
replyLogger: params.replyLogger,
|
|
3300
|
+
connectionId: params.connectionId,
|
|
3301
|
+
skipLog: false,
|
|
3302
|
+
tableMode
|
|
3303
|
+
});
|
|
3304
|
+
} catch (error) {
|
|
3305
|
+
if (isWhatsAppVisibleDeliveryError(error) && !isChannelPartialDeliveryError(error)) throw createChannelPartialDeliveryError(error, {
|
|
3306
|
+
content: reply.text,
|
|
3307
|
+
visibleReplySent: true
|
|
3308
|
+
});
|
|
3309
|
+
throw error;
|
|
3310
|
+
}
|
|
3311
|
+
const result = createWhatsAppChannelDeliveryResult({
|
|
3312
|
+
content: reply.text,
|
|
3313
|
+
delivery
|
|
3314
|
+
});
|
|
3315
|
+
if (!result.visibleReplySent) {
|
|
3023
3316
|
params.replyLogger.warn({
|
|
3024
|
-
correlationId: params.
|
|
3317
|
+
correlationId: params.transport.correlationId ?? null,
|
|
3025
3318
|
connectionId: params.connectionId,
|
|
3026
3319
|
conversationId,
|
|
3027
|
-
chatId: params.
|
|
3320
|
+
chatId: params.transport.chatJid,
|
|
3028
3321
|
to: conversationId,
|
|
3029
|
-
from: params.
|
|
3322
|
+
from: params.transport.recipientJid,
|
|
3030
3323
|
replyKind: info.kind
|
|
3031
3324
|
}, "auto-reply was not accepted by WhatsApp provider");
|
|
3032
|
-
return
|
|
3325
|
+
return result;
|
|
3033
3326
|
}
|
|
3034
3327
|
if (options?.recordDelivery !== false) try {
|
|
3035
3328
|
recordDeliveredPayload(normalizedDeliveryPayload);
|
|
3036
3329
|
} catch (error) {
|
|
3037
|
-
throw
|
|
3330
|
+
throw createChannelPartialDeliveryError(error, {
|
|
3331
|
+
...result,
|
|
3332
|
+
visibleReplySent: true
|
|
3333
|
+
});
|
|
3038
3334
|
}
|
|
3039
|
-
return
|
|
3335
|
+
return result;
|
|
3040
3336
|
};
|
|
3041
3337
|
const mediaOnlyCoalescer = createWhatsAppMediaOnlyReplyCoalescer({ deliver: async (pending) => {
|
|
3042
3338
|
return await deliverNormalizedPayload(pending.payload, pending.info);
|
|
@@ -3058,9 +3354,10 @@ function createWhatsAppReplyPlan(params) {
|
|
|
3058
3354
|
logWhatsAppMediaOnlyFlushResult(flushResult);
|
|
3059
3355
|
return whatsAppReplyDeliveryVisibility(didSendReply || flushResult.delivered > 0);
|
|
3060
3356
|
},
|
|
3061
|
-
onReplyStart: params.
|
|
3357
|
+
onReplyStart: params.transport.sendComposing
|
|
3062
3358
|
},
|
|
3063
3359
|
delivery: {
|
|
3360
|
+
observeMessageSent: true,
|
|
3064
3361
|
preparePayload: async (payload, info) => {
|
|
3065
3362
|
const deliveryPayload = resolveWhatsAppDeliverablePayload(payload, info);
|
|
3066
3363
|
if (!deliveryPayload) return null;
|
|
@@ -3090,7 +3387,7 @@ function createWhatsAppReplyPlan(params) {
|
|
|
3090
3387
|
replyToId: resolveWhatsAppDurableReplyToId({
|
|
3091
3388
|
context: params.context,
|
|
3092
3389
|
info,
|
|
3093
|
-
|
|
3390
|
+
currentMessageId: params.transport.correlationId,
|
|
3094
3391
|
payload
|
|
3095
3392
|
}),
|
|
3096
3393
|
formatting: {
|
|
@@ -3136,16 +3433,16 @@ function createWhatsAppReplyPlan(params) {
|
|
|
3136
3433
|
err,
|
|
3137
3434
|
info,
|
|
3138
3435
|
connectionId: params.connectionId,
|
|
3139
|
-
|
|
3436
|
+
transport: params.transport,
|
|
3140
3437
|
replyLogger: params.replyLogger
|
|
3141
3438
|
});
|
|
3142
3439
|
}
|
|
3143
3440
|
},
|
|
3144
3441
|
replyOptions: {
|
|
3145
|
-
...
|
|
3146
|
-
suppressTyping:
|
|
3147
|
-
disableBlockStreaming,
|
|
3148
|
-
...sourceReplyDeliveryMode ? { sourceReplyDeliveryMode } : {},
|
|
3442
|
+
...params.turnAdoptionLifecycle ? { turnAdoptionLifecycle: params.turnAdoptionLifecycle } : {},
|
|
3443
|
+
suppressTyping: replyPolicy.suppressTyping,
|
|
3444
|
+
disableBlockStreaming: replyPolicy.disableBlockStreaming,
|
|
3445
|
+
...replyPolicy.sourceReplyDeliveryMode ? { sourceReplyDeliveryMode: replyPolicy.sourceReplyDeliveryMode } : {},
|
|
3149
3446
|
onModelSelected: params.onModelSelected,
|
|
3150
3447
|
...statusReactionController ? {
|
|
3151
3448
|
onToolStart: async (payload) => {
|
|
@@ -3490,13 +3787,14 @@ async function processMessage(params) {
|
|
|
3490
3787
|
accountConfig: account,
|
|
3491
3788
|
peerId: dmRouteTarget ?? conversationId
|
|
3492
3789
|
});
|
|
3493
|
-
const
|
|
3790
|
+
const commandAuthorization = commandAuthorized === void 0 ? { kind: "not_checked" } : commandAuthorized ? { kind: "authorized" } : { kind: "denied" };
|
|
3791
|
+
const { inbound, turnInput, ctxPayload } = await prepareWhatsAppInboundContext({
|
|
3494
3792
|
bodyForAgent: msgForAgent.payload.body,
|
|
3495
3793
|
combinedBody,
|
|
3496
3794
|
command: {
|
|
3497
3795
|
kind: isTextCommand ? "text-slash" : "normal",
|
|
3498
3796
|
body: commandBody,
|
|
3499
|
-
|
|
3797
|
+
authorization: commandAuthorization
|
|
3500
3798
|
},
|
|
3501
3799
|
groupHistory: visibleGroupHistory,
|
|
3502
3800
|
groupHistoryLimit: params.groupHistoryLimit,
|
|
@@ -3516,6 +3814,9 @@ async function processMessage(params) {
|
|
|
3516
3814
|
visibleReplyTo: visibleReplyTo ?? void 0,
|
|
3517
3815
|
suppressMessageReceivedHooks: true
|
|
3518
3816
|
});
|
|
3817
|
+
const transport = buildWhatsAppInboundTransportContext(params.msg);
|
|
3818
|
+
const ingressLifecycle = resolveWhatsAppIngressLifecycle(params.msg);
|
|
3819
|
+
const turnAdoptionLifecycle = ingressLifecycle ? bindIngressLifecycleToReplyOptions(ingressLifecycle).turnAdoptionLifecycle : void 0;
|
|
3519
3820
|
emitWhatsAppMessageReceivedHooksIfEnabled({
|
|
3520
3821
|
cfg: params.cfg,
|
|
3521
3822
|
ctx: ctxPayload,
|
|
@@ -3540,16 +3841,10 @@ async function processMessage(params) {
|
|
|
3540
3841
|
const turnResult = await runChannelInboundEvent({
|
|
3541
3842
|
channel: "whatsapp",
|
|
3542
3843
|
accountId: params.route.accountId,
|
|
3543
|
-
raw:
|
|
3844
|
+
raw: inbound,
|
|
3845
|
+
...turnAdoptionLifecycle ? { turnAdoptionLifecycle } : {},
|
|
3544
3846
|
adapter: {
|
|
3545
|
-
ingest: () =>
|
|
3546
|
-
id: params.msg.event.id ?? `${conversationId}:${Date.now()}`,
|
|
3547
|
-
timestamp: params.msg.event.timestamp,
|
|
3548
|
-
rawText: ctxPayload.RawBody ?? "",
|
|
3549
|
-
textForAgent: ctxPayload.BodyForAgent,
|
|
3550
|
-
textForCommands: ctxPayload.CommandBody,
|
|
3551
|
-
raw: params.msg
|
|
3552
|
-
}),
|
|
3847
|
+
ingest: () => turnInput,
|
|
3553
3848
|
preflight: () => {
|
|
3554
3849
|
const reason = admission.ingress.reasonCode;
|
|
3555
3850
|
if (admission.ingress.admission === "dispatch") return { admission: {
|
|
@@ -3580,7 +3875,7 @@ async function processMessage(params) {
|
|
|
3580
3875
|
groupHistoryKey: params.groupHistoryKey,
|
|
3581
3876
|
maxMediaBytes: params.maxMediaBytes,
|
|
3582
3877
|
maxMediaTextChunkLimit: params.maxMediaTextChunkLimit,
|
|
3583
|
-
|
|
3878
|
+
inbound,
|
|
3584
3879
|
onModelSelected,
|
|
3585
3880
|
rememberSentText: params.rememberSentText,
|
|
3586
3881
|
replyLogger: params.replyLogger,
|
|
@@ -3591,7 +3886,9 @@ async function processMessage(params) {
|
|
|
3591
3886
|
replyResolver: params.replyResolver,
|
|
3592
3887
|
route: params.route,
|
|
3593
3888
|
shouldClearGroupHistory,
|
|
3594
|
-
statusReactionController
|
|
3889
|
+
statusReactionController,
|
|
3890
|
+
transport,
|
|
3891
|
+
turnAdoptionLifecycle
|
|
3595
3892
|
});
|
|
3596
3893
|
finalizeReply = finalize;
|
|
3597
3894
|
return {
|
|
@@ -3637,8 +3934,14 @@ async function processMessage(params) {
|
|
|
3637
3934
|
}
|
|
3638
3935
|
//#endregion
|
|
3639
3936
|
//#region extensions/whatsapp/src/auto-reply/monitor/on-message.ts
|
|
3937
|
+
function readDeprecatedAccessControlPassed(msg) {
|
|
3938
|
+
return msg.accessControlPassed;
|
|
3939
|
+
}
|
|
3640
3940
|
function createWebOnMessageHandler(params) {
|
|
3641
|
-
const hasExplicitlyPassedInboundAccess = (msg) =>
|
|
3941
|
+
const hasExplicitlyPassedInboundAccess = (msg) => {
|
|
3942
|
+
if (msg.admission.ingress.decisiveGateId === "legacy-flat-compat") return readDeprecatedAccessControlPassed(msg) === true;
|
|
3943
|
+
return msg.admission.ingress.decision === "allow";
|
|
3944
|
+
};
|
|
3642
3945
|
const withDirectSenderPeer = (msg, peerId) => {
|
|
3643
3946
|
if (requireWhatsAppInboundAdmission(msg).conversation.kind === "group" || msg.platform.sender?.e164 || msg.platform.senderE164 || !peerId.startsWith("+")) return msg;
|
|
3644
3947
|
const normalized = normalizeE164(peerId);
|
|
@@ -3683,9 +3986,8 @@ function createWebOnMessageHandler(params) {
|
|
|
3683
3986
|
if (opts?.statusReactionController !== void 0) processParams.statusReactionController = opts.statusReactionController;
|
|
3684
3987
|
return processMessage(processParams);
|
|
3685
3988
|
};
|
|
3686
|
-
return async (
|
|
3687
|
-
const canRunDirectEarlyAudioPreflight = hasExplicitlyPassedInboundAccess(
|
|
3688
|
-
const normalizedMsg = requireAdmittedWhatsAppInboundMessage(normalizeWebInboundMessage(rawMsg));
|
|
3989
|
+
return async (normalizedMsg) => {
|
|
3990
|
+
const canRunDirectEarlyAudioPreflight = hasExplicitlyPassedInboundAccess(normalizedMsg);
|
|
3689
3991
|
const cfg = params.loadConfig?.() ?? params.cfg;
|
|
3690
3992
|
const peerId = resolvePeerId(normalizedMsg);
|
|
3691
3993
|
const msg = withDirectSenderPeer(normalizedMsg, peerId);
|
|
@@ -3710,9 +4012,9 @@ function createWebOnMessageHandler(params) {
|
|
|
3710
4012
|
});
|
|
3711
4013
|
const baseMentionConfig = buildMentionConfig(cfg);
|
|
3712
4014
|
if (conversationId === msg.platform.recipientJid) logVerbose(`📱 Same-phone mode detected (from === to: ${conversationId})`);
|
|
3713
|
-
if (params.echoTracker.has(msg.payload.body)) {
|
|
4015
|
+
if (params.echoTracker.has(msg.payload.body, conversationId)) {
|
|
3714
4016
|
logVerbose("Skipping auto-reply: detected echo (message matches recently sent text)");
|
|
3715
|
-
params.echoTracker.forget(msg.payload.body);
|
|
4017
|
+
params.echoTracker.forget(msg.payload.body, conversationId);
|
|
3716
4018
|
return;
|
|
3717
4019
|
}
|
|
3718
4020
|
const configuredRoute = resolveConfiguredBindingRoute({
|
|
@@ -4033,12 +4335,12 @@ async function monitorWebChannel(verbose, listenerFactory = attachWebInboxToSock
|
|
|
4033
4335
|
channel: "whatsapp"
|
|
4034
4336
|
});
|
|
4035
4337
|
const shouldDebounce = (msg) => {
|
|
4036
|
-
const
|
|
4338
|
+
const admitted = normalizeAdmittedWebInboundMessage(msg);
|
|
4037
4339
|
return shouldDebounceTextInbound({
|
|
4038
|
-
text:
|
|
4340
|
+
text: admitted.payload.commandBody ?? admitted.payload.body,
|
|
4039
4341
|
cfg,
|
|
4040
|
-
hasMedia: Boolean(
|
|
4041
|
-
allowDebounce: !(
|
|
4342
|
+
hasMedia: Boolean(admitted.payload.media?.path || admitted.payload.media?.type),
|
|
4343
|
+
allowDebounce: !(admitted.payload.location || admitted.quote?.id || admitted.quote?.body)
|
|
4042
4344
|
});
|
|
4043
4345
|
};
|
|
4044
4346
|
let connection;
|
|
@@ -4092,11 +4394,11 @@ async function monitorWebChannel(verbose, listenerFactory = attachWebInboxToSock
|
|
|
4092
4394
|
recentMessageKeys,
|
|
4093
4395
|
baileysGroupMetaCache,
|
|
4094
4396
|
onMessage: async (msg) => {
|
|
4095
|
-
const
|
|
4397
|
+
const admitted = normalizeAdmittedWebInboundMessage(msg);
|
|
4096
4398
|
const inboundAt = Date.now();
|
|
4097
4399
|
controller.noteInbound(inboundAt);
|
|
4098
4400
|
statusController.noteInbound(inboundAt);
|
|
4099
|
-
await onMessage(
|
|
4401
|
+
await onMessage(admitted);
|
|
4100
4402
|
},
|
|
4101
4403
|
onPendingWorkChanged: (pendingWorkCount, at) => {
|
|
4102
4404
|
statusController.noteBusy(pendingWorkCount > 0, at);
|