slidge-whatsapp 0.2.5__cp311-cp311-manylinux_2_36_aarch64.whl → 0.3.0b0__cp311-cp311-manylinux_2_36_aarch64.whl
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.
Potentially problematic release.
This version of slidge-whatsapp might be problematic. Click here for more details.
- slidge_whatsapp/config.py +3 -0
- slidge_whatsapp/contact.py +13 -3
- slidge_whatsapp/event.go +135 -60
- slidge_whatsapp/gateway.go +16 -68
- slidge_whatsapp/gateway.py +4 -5
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.h +198 -181
- slidge_whatsapp/generated/_whatsapp.cpython-311-aarch64-linux-gnu.so +0 -0
- slidge_whatsapp/generated/build.py +166 -152
- slidge_whatsapp/generated/whatsapp.c +1804 -1532
- slidge_whatsapp/generated/whatsapp.go +1150 -1039
- slidge_whatsapp/generated/whatsapp.py +1243 -1118
- slidge_whatsapp/generated/whatsapp_go.h +198 -181
- slidge_whatsapp/go.mod +21 -15
- slidge_whatsapp/go.sum +49 -31
- slidge_whatsapp/group.py +34 -30
- slidge_whatsapp/media/media.go +22 -12
- slidge_whatsapp/session.go +105 -81
- slidge_whatsapp/session.py +46 -14
- slidge_whatsapp/vendor/github.com/beeper/argo-go/LICENSE +9 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/block/blockreader.go +329 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/block/blockwriter.go +417 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/codec/decoder.go +652 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/codec/encoder.go +985 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/header/header.go +135 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/internal/util/util.go +133 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/label/label.go +384 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/label/wiremarkers.go +37 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/bitset/bitset.go +197 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/buf/buf.go +420 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/pkg/varint/varint.go +246 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/wire/wire.go +614 -0
- slidge_whatsapp/vendor/github.com/beeper/argo-go/wirecodec/decode.go +341 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +4 -4
- slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +0 -5
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +3 -0
- slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +40 -20
- slidge_whatsapp/vendor/github.com/elliotchance/orderedmap/v3/LICENSE +21 -0
- slidge_whatsapp/vendor/github.com/elliotchance/orderedmap/v3/list.go +95 -0
- slidge_whatsapp/vendor/github.com/elliotchance/orderedmap/v3/orderedmap.go +187 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz.go +1 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo.go +3 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_nocgo.go +4 -5
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_darwin.go +11 -1
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_linux.go +10 -0
- slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_windows.go +12 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/.gitignore +0 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +44 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/COPYRIGHT.txt +6 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/README.md +14 -17
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi2.go +7 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/LICENSE +21 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/darwin_amd64/libffi.8.dylib +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/darwin_arm64/libffi.8.dylib +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/assets/libffi/windows_amd64/libffi-8.dll +0 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/cif.go +15 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/cif_arm64.go +16 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed.go +49 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_darwin_amd64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_darwin_arm64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/embed_windows_amd64.go +10 -0
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +53 -15
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +10 -2
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/init.go +22 -9
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +1 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +4 -7
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +2 -1
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +11545 -6680
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +527 -273
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +57 -23
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +4 -0
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go +13 -140
- slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.25.go +37 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
- slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +31 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +20 -5
- slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
- slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +1 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +4 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +9 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/LICENSE +19 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/argmap.go +37 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/collections.go +148 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/comment.go +31 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/decode.go +216 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/definition.go +110 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/directive.go +43 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/document.go +89 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/dumper.go +159 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/fragment.go +41 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/operation.go +32 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/path.go +72 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/selection.go +41 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/source.go +19 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/type.go +68 -0
- slidge_whatsapp/vendor/github.com/vektah/gqlparser/v2/ast/value.go +122 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +17 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +4 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +2 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +41 -17
- slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +64 -30
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +6 -4
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +8 -6
- slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +7 -5
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
- slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +98 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +36 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +38 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exstrings/stringutil.go +104 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +104 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
- slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
- slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/.pre-commit-config.yaml +3 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +27 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +4 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/hash.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +32 -26
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/argo-wire-type-store.argo +63 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/argo.go +62 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/argo/name-to-queryids.json +306 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +42 -8
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +5 -4
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +134 -55
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +34 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +63 -30
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +78 -34
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +157 -55
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +202 -154
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +5 -3
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +2 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +448 -138
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +106 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/newsletter.go +83 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +83 -43
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +9 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +42 -18
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +9 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +17 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +10 -11
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.pb.go +983 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/InstamadilloAddMessage.proto +85 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloAddMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.pb.go +197 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeActionLog/InstamadilloCoreTypeActionLog.proto +13 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.pb.go +279 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeAdminMessage/InstamadilloCoreTypeAdminMessage.proto +21 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.pb.go +137 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeCollection/InstamadilloCoreTypeCollection.proto +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.pb.go +313 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeLink/InstamadilloCoreTypeLink.proto +27 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.pb.go +1299 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeMedia/InstamadilloCoreTypeMedia.proto +112 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.pb.go +514 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloCoreTypeText/InstamadilloCoreTypeText.proto +47 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.pb.go +123 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/InstamadilloDeleteMessage.proto +7 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloDeleteMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.pb.go +720 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/InstamadilloSupplementMessage.proto +59 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloSupplementMessage/extra.go +3 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.pb.go +365 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloTransportPayload/InstamadilloTransportPayload.proto +33 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.pb.go +1238 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/instamadilloXmaContentRef/InstamadilloXmaContentRef.proto +105 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +354 -175
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +5 -5
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +170 -15
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waBotMetadata/WABotMetadata.pb.go +5156 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waBotMetadata/WABotMetadata.proto +516 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +29 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +13 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +344 -31
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +26 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.pb.go → WACompanionReg.pb.go} +211 -89
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/{WAWebProtobufsCompanionReg.proto → WACompanionReg.proto} +5 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +173 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +78 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +7463 -5180
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +366 -343
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +485 -135
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +17 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.pb.go +198 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waLidMigrationSyncPayload/WAWebProtobufLidMigrationSyncPayload.proto +14 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +162 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +192 -52
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +60 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +7 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +39 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +61 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.pb.go +952 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waStatusAttributions/WAStatusAttributions.proto +88 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +1802 -453
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +92 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +27 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +59 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +435 -109
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +563 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +4 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +32 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingfields.json +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/reportingtoken.go +176 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +39 -21
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +267 -79
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +28 -16
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +3 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +87 -44
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +75 -88
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +86 -65
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +314 -170
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +155 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/10-chat-db-lid-migration-ts.sql +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +109 -56
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/call.go +1 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +21 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +15 -6
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +9 -9
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +18 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/user.go +2 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +3 -2
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +1 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +59 -37
- slidge_whatsapp/vendor/golang.org/x/crypto/curve25519/curve25519.go +1 -1
- slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
- slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +164 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +181 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +410 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3332 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3233 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
- slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
- slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
- slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/affinity_linux.go +1 -3
- slidge_whatsapp/vendor/golang.org/x/sys/unix/mkerrors.sh +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +93 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +16 -26
- slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_solaris.go +1 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux.go +47 -16
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +3 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +84 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +20 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +4 -4
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +1 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux.go +168 -12
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +18 -2
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +17 -1
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +18 -2
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +16 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +44 -5
- slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +4 -2
- slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +245 -0
- slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +491 -482
- slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
- slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
- slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
- slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
- slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +25 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +13 -5
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/presence.go +33 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +81 -19
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go +2 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go +8 -37
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/presence.go +0 -3
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/{strings_unsafe_go121.go → strings_unsafe.go} +0 -2
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +1 -1
- slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +6 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +10 -0
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/{value_unsafe_go121.go → value_unsafe.go} +0 -2
- slidge_whatsapp/vendor/modules.txt +80 -21
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0b0.dist-info}/METADATA +2 -2
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0b0.dist-info}/RECORD +456 -263
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0b0.dist-info}/WHEEL +1 -1
- slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi_amd64.go +0 -7
- slidge_whatsapp/vendor/github.com/rs/zerolog/CNAME +0 -1
- slidge_whatsapp/vendor/github.com/rs/zerolog/_config.yml +0 -1
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.raw +0 -23
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.raw +0 -7
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WAWebProtobufsCompanionReg.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.raw +0 -0
- slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrade.go +0 -296
- slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe_go120.go +0 -94
- slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe_go120.go +0 -98
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0b0.dist-info}/LICENSE +0 -0
- {slidge_whatsapp-0.2.5.dist-info → slidge_whatsapp-0.3.0b0.dist-info}/entry_points.txt +0 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
// Copyright (c) 2023 Sumner Evans
|
|
2
|
+
//
|
|
3
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
package dbutil
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"errors"
|
|
11
|
+
"fmt"
|
|
12
|
+
"runtime"
|
|
13
|
+
|
|
14
|
+
"go.mau.fi/util/exzerolog"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
var ErrAlreadyIterated = errors.New("this iterator has been already iterated")
|
|
18
|
+
|
|
19
|
+
// RowIter is a wrapper for [Rows] that allows conveniently iterating over rows
|
|
20
|
+
// with a predefined scanner function.
|
|
21
|
+
type RowIter[T any] interface {
|
|
22
|
+
// Iter iterates over the rows and calls the given function for each row.
|
|
23
|
+
//
|
|
24
|
+
// If the function returns false, the iteration is stopped.
|
|
25
|
+
// If the function returns an error, the iteration is stopped and the error is
|
|
26
|
+
// returned.
|
|
27
|
+
Iter(func(T) (bool, error)) error
|
|
28
|
+
|
|
29
|
+
// AsList collects all rows into a slice.
|
|
30
|
+
AsList() ([]T, error)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type ConvertRowFn[T any] func(Scannable) (T, error)
|
|
34
|
+
|
|
35
|
+
// NewRowIter is a proxy for NewRowIterWithError for more convenient usage.
|
|
36
|
+
//
|
|
37
|
+
// For example:
|
|
38
|
+
//
|
|
39
|
+
// func exampleConvertRowFn(rows Scannable) (*YourType, error) {
|
|
40
|
+
// ...
|
|
41
|
+
// }
|
|
42
|
+
// func exampleFunction() {
|
|
43
|
+
// iter := dbutil.ConvertRowFn[*YourType](exampleConvertRowFn).NewRowIter(
|
|
44
|
+
// db.Query("SELECT ..."),
|
|
45
|
+
// )
|
|
46
|
+
// }
|
|
47
|
+
func (crf ConvertRowFn[T]) NewRowIter(rows Rows, err error) RowIter[T] {
|
|
48
|
+
return newRowIterWithError(rows, crf, err)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
type rowIterImpl[T any] struct {
|
|
52
|
+
Rows
|
|
53
|
+
ConvertRow ConvertRowFn[T]
|
|
54
|
+
|
|
55
|
+
iterated bool
|
|
56
|
+
caller string
|
|
57
|
+
err error
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// NewRowIter creates a new RowIter from the given Rows and scanner function.
|
|
61
|
+
//
|
|
62
|
+
// Deprecated: use NewRowIterWithError instead to avoid an unnecessary separate error check on the Query result.
|
|
63
|
+
//
|
|
64
|
+
// Instead of
|
|
65
|
+
//
|
|
66
|
+
// func DoQuery(...) (dbutil.RowIter, error) {
|
|
67
|
+
// rows, err := db.Query(...)
|
|
68
|
+
// if err != nil {
|
|
69
|
+
// return nil, err
|
|
70
|
+
// }
|
|
71
|
+
// return dbutil.NewRowIter(rows, convertFn), nil
|
|
72
|
+
// }
|
|
73
|
+
//
|
|
74
|
+
// you should use
|
|
75
|
+
//
|
|
76
|
+
// func DoQuery(...) dbutil.RowIter {
|
|
77
|
+
// rows, err := db.Query(...)
|
|
78
|
+
// return dbutil.NewRowIterWithError(rows, convertFn, err)
|
|
79
|
+
// }
|
|
80
|
+
//
|
|
81
|
+
// or alternatively pre-wrap the convertFn
|
|
82
|
+
//
|
|
83
|
+
// var converter = dbutil.ConvertRowFn(convertFn)
|
|
84
|
+
// func DoQuery(...) dbutil.RowIter {
|
|
85
|
+
// return converter.NewRowIter(db.Query(...))
|
|
86
|
+
// }
|
|
87
|
+
//
|
|
88
|
+
// Embedding the error in the iterator allows the caller to do only one error check instead of two:
|
|
89
|
+
//
|
|
90
|
+
// iter, err := DoQuery(...)
|
|
91
|
+
// if err != nil { ... }
|
|
92
|
+
// result, err := iter.Iter(...)
|
|
93
|
+
// if err != nil { ... }
|
|
94
|
+
//
|
|
95
|
+
// vs
|
|
96
|
+
//
|
|
97
|
+
// result, err := DoQuery(...).Iter(...)
|
|
98
|
+
// if err != nil { ... }
|
|
99
|
+
func NewRowIter[T any](rows Rows, convertFn ConvertRowFn[T]) RowIter[T] {
|
|
100
|
+
return newRowIterWithError(rows, convertFn, nil)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// NewRowIterWithError creates a new RowIter from the given Rows and scanner function with default error. If not nil, it will be returned without calling iterator function.
|
|
104
|
+
func NewRowIterWithError[T any](rows Rows, convertFn ConvertRowFn[T], err error) RowIter[T] {
|
|
105
|
+
return newRowIterWithError(rows, convertFn, err)
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
func newRowIterWithError[T any](rows Rows, convertFn ConvertRowFn[T], err error) RowIter[T] {
|
|
109
|
+
ri := &rowIterImpl[T]{Rows: rows, ConvertRow: convertFn, err: err}
|
|
110
|
+
if err == nil {
|
|
111
|
+
callerSkip := 2
|
|
112
|
+
if pc, file, line, ok := runtime.Caller(callerSkip); ok {
|
|
113
|
+
ri.caller = exzerolog.CallerWithFunctionName(pc, file, line)
|
|
114
|
+
}
|
|
115
|
+
runtime.SetFinalizer(ri, (*rowIterImpl[T]).destroy)
|
|
116
|
+
}
|
|
117
|
+
return ri
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
func ScanSingleColumn[T any](rows Scannable) (val T, err error) {
|
|
121
|
+
err = rows.Scan(&val)
|
|
122
|
+
return
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
type NewableDataStruct[T any] interface {
|
|
126
|
+
DataStruct[T]
|
|
127
|
+
New() T
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
func ScanDataStruct[T NewableDataStruct[T]](rows Scannable) (T, error) {
|
|
131
|
+
var val T
|
|
132
|
+
return val.New().Scan(rows)
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
func (i *rowIterImpl[T]) destroy() {
|
|
136
|
+
if !i.iterated {
|
|
137
|
+
panic(fmt.Errorf("RowIter created at %s wasn't iterated", i.caller))
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
func (i *rowIterImpl[T]) Iter(fn func(T) (bool, error)) error {
|
|
142
|
+
if i == nil {
|
|
143
|
+
return nil
|
|
144
|
+
} else if i.Rows == nil || i.err != nil {
|
|
145
|
+
return i.err
|
|
146
|
+
}
|
|
147
|
+
defer func() {
|
|
148
|
+
_ = i.Rows.Close()
|
|
149
|
+
i.iterated = true
|
|
150
|
+
}()
|
|
151
|
+
|
|
152
|
+
for i.Rows.Next() {
|
|
153
|
+
if item, err := i.ConvertRow(i.Rows); err != nil {
|
|
154
|
+
i.err = err
|
|
155
|
+
return err
|
|
156
|
+
} else if cont, err := fn(item); err != nil {
|
|
157
|
+
i.err = err
|
|
158
|
+
return err
|
|
159
|
+
} else if !cont {
|
|
160
|
+
break
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
err := i.Rows.Err()
|
|
165
|
+
if err != nil {
|
|
166
|
+
i.err = err
|
|
167
|
+
} else {
|
|
168
|
+
i.err = ErrAlreadyIterated
|
|
169
|
+
}
|
|
170
|
+
return err
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
func (i *rowIterImpl[T]) AsList() (list []T, err error) {
|
|
174
|
+
err = i.Iter(func(item T) (bool, error) {
|
|
175
|
+
list = append(list, item)
|
|
176
|
+
return true, nil
|
|
177
|
+
})
|
|
178
|
+
return
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
func RowIterAsMap[T any, Key comparable, Value any](ri RowIter[T], getKeyValue func(T) (Key, Value)) (map[Key]Value, error) {
|
|
182
|
+
m := make(map[Key]Value)
|
|
183
|
+
err := ri.Iter(func(item T) (bool, error) {
|
|
184
|
+
k, v := getKeyValue(item)
|
|
185
|
+
m[k] = v
|
|
186
|
+
return true, nil
|
|
187
|
+
})
|
|
188
|
+
return m, err
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
type sliceIterImpl[T any] struct {
|
|
192
|
+
items []T
|
|
193
|
+
err error
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
func NewSliceIter[T any](items []T) RowIter[T] {
|
|
197
|
+
return &sliceIterImpl[T]{items: items}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
func NewSliceIterWithError[T any](items []T, err error) RowIter[T] {
|
|
201
|
+
return &sliceIterImpl[T]{items: items, err: err}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
func (i *sliceIterImpl[T]) Iter(fn func(T) (bool, error)) error {
|
|
205
|
+
if i == nil {
|
|
206
|
+
return nil
|
|
207
|
+
} else if i.err != nil {
|
|
208
|
+
return i.err
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
for _, item := range i.items {
|
|
212
|
+
if cont, err := fn(item); err != nil {
|
|
213
|
+
i.err = err
|
|
214
|
+
return err
|
|
215
|
+
} else if !cont {
|
|
216
|
+
break
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
i.err = ErrAlreadyIterated
|
|
221
|
+
return nil
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
func (i *sliceIterImpl[T]) AsList() ([]T, error) {
|
|
225
|
+
if i == nil {
|
|
226
|
+
return nil, nil
|
|
227
|
+
} else if i.err != nil {
|
|
228
|
+
return nil, i.err
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
i.err = ErrAlreadyIterated
|
|
232
|
+
return i.items, nil
|
|
233
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
package dbutil
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"database/sql/driver"
|
|
5
|
+
"encoding/json"
|
|
6
|
+
"fmt"
|
|
7
|
+
"unsafe"
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
// JSON is a utility type for using arbitrary JSON data as values in database Exec and Scan calls.
|
|
11
|
+
type JSON struct {
|
|
12
|
+
Data any
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
func (j JSON) Scan(i any) error {
|
|
16
|
+
switch value := i.(type) {
|
|
17
|
+
case nil:
|
|
18
|
+
return nil
|
|
19
|
+
case string:
|
|
20
|
+
return json.Unmarshal([]byte(value), j.Data)
|
|
21
|
+
case []byte:
|
|
22
|
+
return json.Unmarshal(value, j.Data)
|
|
23
|
+
default:
|
|
24
|
+
return fmt.Errorf("invalid type %T for dbutil.JSON.Scan", i)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func (j JSON) Value() (driver.Value, error) {
|
|
29
|
+
if j.Data == nil {
|
|
30
|
+
return nil, nil
|
|
31
|
+
}
|
|
32
|
+
v, err := json.Marshal(j.Data)
|
|
33
|
+
return unsafe.String(unsafe.SliceData(v), len(v)), err
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// JSONPtr is a convenience function for wrapping a pointer to a value in the JSON utility, but removing typed nils
|
|
37
|
+
// (i.e. preventing nils from turning into the string "null" in the database).
|
|
38
|
+
func JSONPtr[T any](val *T) JSON {
|
|
39
|
+
return JSON{Data: UntypedNil(val)}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
func UntypedNil[T any](val *T) any {
|
|
43
|
+
if val == nil {
|
|
44
|
+
return nil
|
|
45
|
+
}
|
|
46
|
+
return val
|
|
47
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
package dbutil
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"context"
|
|
5
|
+
"regexp"
|
|
6
|
+
"strings"
|
|
7
|
+
"time"
|
|
8
|
+
|
|
9
|
+
"github.com/rs/zerolog"
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
type DatabaseLogger interface {
|
|
13
|
+
QueryTiming(ctx context.Context, method, query string, args []any, nrows int, duration time.Duration, err error)
|
|
14
|
+
WarnUnsupportedVersion(current, compat, latest int)
|
|
15
|
+
PrepareUpgrade(current, compat, latest int)
|
|
16
|
+
DoUpgrade(from, to int, message string, txn TxnMode)
|
|
17
|
+
// Deprecated: legacy warning method, return errors instead
|
|
18
|
+
Warn(msg string, args ...any)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
type noopLogger struct{}
|
|
22
|
+
|
|
23
|
+
var NoopLogger DatabaseLogger = &noopLogger{}
|
|
24
|
+
|
|
25
|
+
func (n noopLogger) WarnUnsupportedVersion(_, _, _ int) {}
|
|
26
|
+
func (n noopLogger) PrepareUpgrade(_, _, _ int) {}
|
|
27
|
+
func (n noopLogger) DoUpgrade(_, _ int, _ string, _ TxnMode) {}
|
|
28
|
+
func (n noopLogger) Warn(msg string, args ...any) {}
|
|
29
|
+
|
|
30
|
+
func (n noopLogger) QueryTiming(_ context.Context, _, _ string, _ []any, _ int, _ time.Duration, _ error) {
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
type zeroLogger struct {
|
|
34
|
+
l *zerolog.Logger
|
|
35
|
+
ZeroLogSettings
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
type ZeroLogSettings struct {
|
|
39
|
+
CallerSkipFrame int
|
|
40
|
+
Caller bool
|
|
41
|
+
|
|
42
|
+
// TraceLogAllQueries specifies whether or not all queries should be logged
|
|
43
|
+
// at the TRACE level.
|
|
44
|
+
TraceLogAllQueries bool
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func ZeroLogger(log zerolog.Logger, cfg ...ZeroLogSettings) DatabaseLogger {
|
|
48
|
+
return ZeroLoggerPtr(&log, cfg...)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func ZeroLoggerPtr(log *zerolog.Logger, cfg ...ZeroLogSettings) DatabaseLogger {
|
|
52
|
+
wrapped := &zeroLogger{l: log}
|
|
53
|
+
if len(cfg) > 0 {
|
|
54
|
+
wrapped.ZeroLogSettings = cfg[0]
|
|
55
|
+
} else {
|
|
56
|
+
wrapped.ZeroLogSettings = ZeroLogSettings{
|
|
57
|
+
CallerSkipFrame: 2, // Skip LoggingExecable.ExecContext and zeroLogger.QueryTiming
|
|
58
|
+
Caller: true,
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return wrapped
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
func (z zeroLogger) WarnUnsupportedVersion(current, compat, latest int) {
|
|
65
|
+
z.l.Warn().
|
|
66
|
+
Int("current_version", current).
|
|
67
|
+
Int("oldest_compatible_version", compat).
|
|
68
|
+
Int("latest_known_version", latest).
|
|
69
|
+
Msg("Unsupported database schema version, continuing anyway")
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
func (z zeroLogger) PrepareUpgrade(current, compat, latest int) {
|
|
73
|
+
evt := z.l.Info().
|
|
74
|
+
Int("current_version", current).
|
|
75
|
+
Int("oldest_compatible_version", compat).
|
|
76
|
+
Int("latest_known_version", latest)
|
|
77
|
+
if current >= latest {
|
|
78
|
+
evt.Msg("Database is up to date")
|
|
79
|
+
} else {
|
|
80
|
+
evt.Msg("Preparing to update database schema")
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
func (z zeroLogger) DoUpgrade(from, to int, message string, txn TxnMode) {
|
|
85
|
+
z.l.Info().
|
|
86
|
+
Int("from", from).
|
|
87
|
+
Int("to", to).
|
|
88
|
+
Str("txn_mode", string(txn)).
|
|
89
|
+
Str("description", message).
|
|
90
|
+
Msg("Upgrading database")
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var whitespaceRegex = regexp.MustCompile(`\s+`)
|
|
94
|
+
|
|
95
|
+
func (z zeroLogger) QueryTiming(ctx context.Context, method, query string, args []any, nrows int, duration time.Duration, err error) {
|
|
96
|
+
log := zerolog.Ctx(ctx)
|
|
97
|
+
if log.GetLevel() == zerolog.Disabled || log == zerolog.DefaultContextLogger {
|
|
98
|
+
log = z.l
|
|
99
|
+
}
|
|
100
|
+
if (!z.TraceLogAllQueries || log.GetLevel() != zerolog.TraceLevel) && duration < 1*time.Second {
|
|
101
|
+
return
|
|
102
|
+
}
|
|
103
|
+
if nrows > -1 {
|
|
104
|
+
rowLog := log.With().Int("rows", nrows).Logger()
|
|
105
|
+
log = &rowLog
|
|
106
|
+
}
|
|
107
|
+
query = strings.TrimSpace(whitespaceRegex.ReplaceAllLiteralString(query, " "))
|
|
108
|
+
log.Trace().
|
|
109
|
+
Err(err).
|
|
110
|
+
Int64("duration_µs", duration.Microseconds()).
|
|
111
|
+
Str("method", method).
|
|
112
|
+
Str("query", query).
|
|
113
|
+
Interface("query_args", args).
|
|
114
|
+
Msg("Query")
|
|
115
|
+
if duration >= 1*time.Second {
|
|
116
|
+
evt := log.Warn().
|
|
117
|
+
Float64("duration_seconds", duration.Seconds()).
|
|
118
|
+
Str("method", method).
|
|
119
|
+
Str("query", query)
|
|
120
|
+
if z.Caller {
|
|
121
|
+
evt = evt.Caller(z.CallerSkipFrame)
|
|
122
|
+
}
|
|
123
|
+
evt.Msg("Query took long")
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
func (z zeroLogger) Warn(msg string, args ...any) {
|
|
128
|
+
z.l.Warn().Msgf(msg, args...) // zerolog-allow-msgf
|
|
129
|
+
}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
// Copyright (c) 2024 Tulir Asokan
|
|
2
|
+
//
|
|
3
|
+
// This Source Code Form is subject to the terms of the Mozilla Public
|
|
4
|
+
// License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
5
|
+
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
6
|
+
|
|
7
|
+
package dbutil
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"fmt"
|
|
11
|
+
"regexp"
|
|
12
|
+
"strings"
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
// Array is an interface for small fixed-size arrays.
|
|
16
|
+
// It exists because generics can't specify array sizes: https://github.com/golang/go/issues/44253
|
|
17
|
+
type Array interface {
|
|
18
|
+
[0]any | [1]any | [2]any | [3]any | [4]any | [5]any | [6]any | [7]any | [8]any | [9]any |
|
|
19
|
+
[10]any | [11]any | [12]any | [13]any | [14]any | [15]any | [16]any | [17]any | [18]any | [19]any |
|
|
20
|
+
[20]any | [21]any | [22]any | [23]any | [24]any | [25]any | [26]any | [27]any | [28]any | [29]any
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// MassInsertable represents a struct that contains dynamic values for a mass insert query.
|
|
24
|
+
type MassInsertable[T Array] interface {
|
|
25
|
+
GetMassInsertValues() T
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// MassInsertBuilder contains pre-validated templates for building mass insert SQL queries.
|
|
29
|
+
type MassInsertBuilder[Item MassInsertable[DynamicParams], StaticParams Array, DynamicParams Array] struct {
|
|
30
|
+
queryTemplate string
|
|
31
|
+
placeholderTemplate string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// NewMassInsertBuilder creates a new MassInsertBuilder that can build mass insert database queries.
|
|
35
|
+
//
|
|
36
|
+
// Parameters in mass insert queries are split into two types: static parameters
|
|
37
|
+
// and dynamic parameters. Static parameters are the same for all items being
|
|
38
|
+
// inserted, while dynamic parameters are different for each item.
|
|
39
|
+
//
|
|
40
|
+
// The given query should be a normal INSERT query for a single row. It can also
|
|
41
|
+
// have ON CONFLICT clauses, as long as the clause uses `excluded` instead of
|
|
42
|
+
// positional parameters.
|
|
43
|
+
//
|
|
44
|
+
// The placeholder template is used to replace the `VALUES` part of the given
|
|
45
|
+
// query. It should contain a positional placeholder ($1, $2, ...) for each
|
|
46
|
+
// static placeholder, and a fmt directive (`$%d`) for each dynamic placeholder.
|
|
47
|
+
//
|
|
48
|
+
// The given query and placeholder template are validated here and the function
|
|
49
|
+
// will panic if they're invalid (e.g. if the `VALUES` part of the insert query
|
|
50
|
+
// can't be found, or if the placeholder template doesn't have the right things).
|
|
51
|
+
// The idea is to use this function to populate a global variable with the mass
|
|
52
|
+
// insert builder, so the panic will happen at startup if the query or
|
|
53
|
+
// placeholder template are invalid (instead of returning an error when trying
|
|
54
|
+
// to use the query later).
|
|
55
|
+
//
|
|
56
|
+
// Example:
|
|
57
|
+
//
|
|
58
|
+
// type Message struct {
|
|
59
|
+
// ChatID int
|
|
60
|
+
// RemoteID string
|
|
61
|
+
// MXID id.EventID
|
|
62
|
+
// Timestamp time.Time
|
|
63
|
+
// }
|
|
64
|
+
//
|
|
65
|
+
// func (msg *Message) GetMassInsertValues() [3]any {
|
|
66
|
+
// return [3]any{msg.RemoteID, msg.MXID, msg.Timestamp.UnixMilli()}
|
|
67
|
+
// }
|
|
68
|
+
//
|
|
69
|
+
// const insertMessageQuery = `INSERT INTO message (chat_id, remote_id, mxid, timestamp) VALUES ($1, $2, $3, $4)`
|
|
70
|
+
// var massInsertMessageBuilder = dbutil.NewMassInsertBuilder[Message, [2]any](insertMessageQuery, "($1, $%d, $%d, $%d, $%d)")
|
|
71
|
+
//
|
|
72
|
+
// func DoMassInsert(ctx context.Context, messages []*Message) error {
|
|
73
|
+
// query, params := massInsertMessageBuilder.Build([1]any{messages[0].ChatID}, messages)
|
|
74
|
+
// return db.Exec(ctx, query, params...)
|
|
75
|
+
// }
|
|
76
|
+
func NewMassInsertBuilder[Item MassInsertable[DynamicParams], StaticParams Array, DynamicParams Array](
|
|
77
|
+
singleInsertQuery, placeholderTemplate string,
|
|
78
|
+
) *MassInsertBuilder[Item, StaticParams, DynamicParams] {
|
|
79
|
+
var dyn DynamicParams
|
|
80
|
+
var stat StaticParams
|
|
81
|
+
totalParams := len(dyn) + len(stat)
|
|
82
|
+
mainQueryVariablePlaceholderParts := make([]string, totalParams)
|
|
83
|
+
for i := 0; i < totalParams; i++ {
|
|
84
|
+
mainQueryVariablePlaceholderParts[i] = fmt.Sprintf(`\$%d`, i+1)
|
|
85
|
+
}
|
|
86
|
+
mainQueryVariablePlaceholderRegex := regexp.MustCompile(fmt.Sprintf(`\(\s*%s\s*\)`, strings.Join(mainQueryVariablePlaceholderParts, `\s*,\s*`)))
|
|
87
|
+
queryPlaceholders := mainQueryVariablePlaceholderRegex.FindAllString(singleInsertQuery, -1)
|
|
88
|
+
if len(queryPlaceholders) == 0 {
|
|
89
|
+
panic(fmt.Errorf("invalid insert query: placeholders not found"))
|
|
90
|
+
} else if len(queryPlaceholders) > 1 {
|
|
91
|
+
panic(fmt.Errorf("invalid insert query: multiple placeholders found"))
|
|
92
|
+
}
|
|
93
|
+
for i := 0; i < len(stat); i++ {
|
|
94
|
+
if !strings.Contains(placeholderTemplate, fmt.Sprintf("$%d", i+1)) {
|
|
95
|
+
panic(fmt.Errorf("invalid placeholder template: static placeholder $%d not found", i+1))
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if strings.Contains(placeholderTemplate, fmt.Sprintf("$%d", len(stat)+1)) {
|
|
99
|
+
panic(fmt.Errorf("invalid placeholder template: non-static placeholder $%d found", len(stat)+1))
|
|
100
|
+
}
|
|
101
|
+
fmtParams := make([]any, len(dyn))
|
|
102
|
+
for i := 0; i < len(dyn); i++ {
|
|
103
|
+
fmtParams[i] = fmt.Sprintf("$%d", len(stat)+i+1)
|
|
104
|
+
}
|
|
105
|
+
formattedPlaceholder := fmt.Sprintf(placeholderTemplate, fmtParams...)
|
|
106
|
+
if strings.Contains(formattedPlaceholder, "!(EXTRA string=") {
|
|
107
|
+
panic(fmt.Errorf("invalid placeholder template: extra string found"))
|
|
108
|
+
}
|
|
109
|
+
for i := 0; i < len(dyn); i++ {
|
|
110
|
+
if !strings.Contains(formattedPlaceholder, fmt.Sprintf("$%d", len(stat)+i+1)) {
|
|
111
|
+
panic(fmt.Errorf("invalid placeholder template: dynamic placeholder $%d not found", len(stat)+i+1))
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return &MassInsertBuilder[Item, StaticParams, DynamicParams]{
|
|
115
|
+
queryTemplate: strings.Replace(singleInsertQuery, queryPlaceholders[0], "%s", 1),
|
|
116
|
+
placeholderTemplate: placeholderTemplate,
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Build constructs a ready-to-use mass insert SQL query using the prepared templates in this builder.
|
|
121
|
+
//
|
|
122
|
+
// This method always only produces one query. If there are lots of items,
|
|
123
|
+
// chunking them beforehand may be required to avoid query parameter limits.
|
|
124
|
+
// For example, SQLite (3.32+) has a limit of 32766 parameters by default,
|
|
125
|
+
// while Postgres allows up to 65535. To find out if there are too many items,
|
|
126
|
+
// divide the maximum number of parameters by the number of dynamic columns in
|
|
127
|
+
// your data and subtract the number of static columns.
|
|
128
|
+
//
|
|
129
|
+
// Example of chunking input data:
|
|
130
|
+
//
|
|
131
|
+
// var mib dbutil.MassInsertBuilder
|
|
132
|
+
// var db *dbutil.Database
|
|
133
|
+
// func MassInsert(ctx context.Context, ..., data []T) error {
|
|
134
|
+
// return db.DoTxn(ctx, nil, func(ctx context.Context) error {
|
|
135
|
+
// for _, chunk := range exslices.Chunk(data, 100) {
|
|
136
|
+
// query, params := mib.Build(staticParams)
|
|
137
|
+
// _, err := db.Exec(ctx, query, params...)
|
|
138
|
+
// if err != nil {
|
|
139
|
+
// return err
|
|
140
|
+
// }
|
|
141
|
+
// }
|
|
142
|
+
// return nil
|
|
143
|
+
// }
|
|
144
|
+
// }
|
|
145
|
+
func (mib *MassInsertBuilder[Item, StaticParams, DynamicParams]) Build(static StaticParams, data []Item) (query string, params []any) {
|
|
146
|
+
var itemValues DynamicParams
|
|
147
|
+
params = make([]any, len(static)+len(itemValues)*len(data))
|
|
148
|
+
placeholders := make([]string, len(data))
|
|
149
|
+
for i := 0; i < len(static); i++ {
|
|
150
|
+
params[i] = static[i]
|
|
151
|
+
}
|
|
152
|
+
fmtParams := make([]any, len(itemValues))
|
|
153
|
+
for i, item := range data {
|
|
154
|
+
baseIndex := len(static) + len(itemValues)*i
|
|
155
|
+
itemValues = item.GetMassInsertValues()
|
|
156
|
+
for j := 0; j < len(itemValues); j++ {
|
|
157
|
+
params[baseIndex+j] = itemValues[j]
|
|
158
|
+
fmtParams[j] = baseIndex + j + 1
|
|
159
|
+
}
|
|
160
|
+
placeholders[i] = fmt.Sprintf(mib.placeholderTemplate, fmtParams...)
|
|
161
|
+
}
|
|
162
|
+
query = fmt.Sprintf(mib.queryTemplate, strings.Join(placeholders, ", "))
|
|
163
|
+
return
|
|
164
|
+
}
|