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,137 @@
|
|
|
1
|
+
// Copyright (c) 2023 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
|
+
"context"
|
|
11
|
+
"database/sql"
|
|
12
|
+
"errors"
|
|
13
|
+
"time"
|
|
14
|
+
|
|
15
|
+
"golang.org/x/exp/constraints"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
// DataStruct is an interface for structs that represent a single database row.
|
|
19
|
+
type DataStruct[T any] interface {
|
|
20
|
+
Scan(row Scannable) (T, error)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// QueryHelper is a generic helper struct for SQL query execution boilerplate.
|
|
24
|
+
//
|
|
25
|
+
// After implementing the Scan and Init methods in a data struct, the query
|
|
26
|
+
// helper allows writing query functions in a single line.
|
|
27
|
+
type QueryHelper[T DataStruct[T]] struct {
|
|
28
|
+
db *Database
|
|
29
|
+
newFunc func(qh *QueryHelper[T]) T
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
func MakeQueryHelper[T DataStruct[T]](db *Database, new func(qh *QueryHelper[T]) T) *QueryHelper[T] {
|
|
33
|
+
return &QueryHelper[T]{db: db, newFunc: new}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// ValueOrErr is a helper function that returns the value if err is nil, or
|
|
37
|
+
// returns nil and the error if err is not nil. It can be used to avoid
|
|
38
|
+
// `if err != nil { return nil, err }` boilerplate in certain cases like
|
|
39
|
+
// DataStruct.Scan implementations.
|
|
40
|
+
func ValueOrErr[T any](val *T, err error) (*T, error) {
|
|
41
|
+
if err != nil {
|
|
42
|
+
return nil, err
|
|
43
|
+
}
|
|
44
|
+
return val, nil
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// StrPtr returns a pointer to the given string, or nil if the string is empty.
|
|
48
|
+
func StrPtr[T ~string](val T) *string {
|
|
49
|
+
if val == "" {
|
|
50
|
+
return nil
|
|
51
|
+
}
|
|
52
|
+
strVal := string(val)
|
|
53
|
+
return &strVal
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// NumPtr returns a pointer to the given number, or nil if the number is zero.
|
|
57
|
+
func NumPtr[T constraints.Integer | constraints.Float](val T) *T {
|
|
58
|
+
if val == 0 {
|
|
59
|
+
return nil
|
|
60
|
+
}
|
|
61
|
+
return &val
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// UnixPtr returns a pointer to the given time as unix seconds, or nil if the time is zero.
|
|
65
|
+
func UnixPtr(val time.Time) *int64 {
|
|
66
|
+
return ConvertedPtr(val, time.Time.Unix)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// UnixMilliPtr returns a pointer to the given time as unix milliseconds, or nil if the time is zero.
|
|
70
|
+
func UnixMilliPtr(val time.Time) *int64 {
|
|
71
|
+
return ConvertedPtr(val, time.Time.UnixMilli)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
type Zeroable interface {
|
|
75
|
+
IsZero() bool
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// ConvertedPtr returns a pointer to the converted version of the given value, or nil if the input is zero.
|
|
79
|
+
//
|
|
80
|
+
// This is primarily meant for time.Time, but it can be used with any type that has implements `IsZero() bool`.
|
|
81
|
+
//
|
|
82
|
+
// yourTime := time.Now()
|
|
83
|
+
// unixMSPtr := dbutil.TimePtr(yourTime, time.Time.UnixMilli)
|
|
84
|
+
func ConvertedPtr[Input Zeroable, Output any](val Input, converter func(Input) Output) *Output {
|
|
85
|
+
if val.IsZero() {
|
|
86
|
+
return nil
|
|
87
|
+
}
|
|
88
|
+
converted := converter(val)
|
|
89
|
+
return &converted
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
func (qh *QueryHelper[T]) GetDB() *Database {
|
|
93
|
+
return qh.db
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
func (qh *QueryHelper[T]) New() T {
|
|
97
|
+
return qh.newFunc(qh)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Exec executes a query with ExecContext and returns the error.
|
|
101
|
+
//
|
|
102
|
+
// It omits the sql.Result return value, as it is rarely used. When the result
|
|
103
|
+
// is wanted, use `qh.GetDB().Exec(...)` instead, which is
|
|
104
|
+
// otherwise equivalent.
|
|
105
|
+
func (qh *QueryHelper[T]) Exec(ctx context.Context, query string, args ...any) error {
|
|
106
|
+
_, err := qh.db.Exec(ctx, query, args...)
|
|
107
|
+
return err
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
func (qh *QueryHelper[T]) scanNew(row Scannable) (T, error) {
|
|
111
|
+
return qh.New().Scan(row)
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// QueryOne executes a query with QueryRowContext, uses the associated DataStruct
|
|
115
|
+
// to scan it, and returns the value. If the query returns no rows, it returns nil
|
|
116
|
+
// and no error.
|
|
117
|
+
func (qh *QueryHelper[T]) QueryOne(ctx context.Context, query string, args ...any) (val T, err error) {
|
|
118
|
+
val, err = qh.scanNew(qh.db.QueryRow(ctx, query, args...))
|
|
119
|
+
if errors.Is(err, sql.ErrNoRows) {
|
|
120
|
+
return *new(T), nil
|
|
121
|
+
}
|
|
122
|
+
return val, err
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// QueryMany executes a query with QueryContext, uses the associated DataStruct
|
|
126
|
+
// to scan each row, and returns the values. If the query returns no rows, it
|
|
127
|
+
// returns a non-nil zero-length slice and no error.
|
|
128
|
+
func (qh *QueryHelper[T]) QueryMany(ctx context.Context, query string, args ...any) ([]T, error) {
|
|
129
|
+
return qh.QueryManyIter(ctx, query, args...).AsList()
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// QueryManyIter executes a query with QueryContext and returns a RowIter
|
|
133
|
+
// that will use the associated DataStruct to scan each row.
|
|
134
|
+
func (qh *QueryHelper[T]) QueryManyIter(ctx context.Context, query string, args ...any) RowIter[T] {
|
|
135
|
+
rows, err := qh.db.Query(ctx, query, args...)
|
|
136
|
+
return NewRowIterWithError(rows, qh.scanNew, err)
|
|
137
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
"reflect"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
func reflectScan[T any](row Scannable) (*T, error) {
|
|
14
|
+
t := new(T)
|
|
15
|
+
val := reflect.ValueOf(t).Elem()
|
|
16
|
+
fields := reflect.VisibleFields(val.Type())
|
|
17
|
+
scanInto := make([]any, len(fields))
|
|
18
|
+
for i, field := range fields {
|
|
19
|
+
scanInto[i] = val.FieldByIndex(field.Index).Addr().Interface()
|
|
20
|
+
}
|
|
21
|
+
err := row.Scan(scanInto...)
|
|
22
|
+
return t, err
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// NewSimpleReflectRowIter creates a new RowIter that uses reflection to scan rows into the given type.
|
|
26
|
+
//
|
|
27
|
+
// This is a simplified implementation that always scans to all struct fields. It does not support any kind of struct tags.
|
|
28
|
+
func NewSimpleReflectRowIter[T any](rows Rows, err error) RowIter[*T] {
|
|
29
|
+
return ConvertRowFn[*T](reflectScan[T]).NewRowIter(rows, err)
|
|
30
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
// Copyright (c) 2023 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
|
+
"context"
|
|
11
|
+
"database/sql"
|
|
12
|
+
"errors"
|
|
13
|
+
"fmt"
|
|
14
|
+
"runtime"
|
|
15
|
+
"sync/atomic"
|
|
16
|
+
"time"
|
|
17
|
+
|
|
18
|
+
"github.com/petermattis/goid"
|
|
19
|
+
"github.com/rs/zerolog"
|
|
20
|
+
|
|
21
|
+
"go.mau.fi/util/exerrors"
|
|
22
|
+
"go.mau.fi/util/random"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
var (
|
|
26
|
+
ErrTxn = errors.New("transaction")
|
|
27
|
+
ErrTxnBegin = fmt.Errorf("%w: begin", ErrTxn)
|
|
28
|
+
ErrTxnCommit = fmt.Errorf("%w: commit", ErrTxn)
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
type contextKey int64
|
|
32
|
+
|
|
33
|
+
const (
|
|
34
|
+
ContextKeyDoTxnCallerSkip contextKey = 1
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
var nextContextKeyDatabaseTransaction atomic.Uint64
|
|
38
|
+
|
|
39
|
+
func init() {
|
|
40
|
+
nextContextKeyDatabaseTransaction.Store(1 << 61)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
func (db *Database) Exec(ctx context.Context, query string, args ...any) (sql.Result, error) {
|
|
44
|
+
return db.Execable(ctx).ExecContext(ctx, query, args...)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
func (db *Database) Query(ctx context.Context, query string, args ...any) (Rows, error) {
|
|
48
|
+
return db.Execable(ctx).QueryContext(ctx, query, args...)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func (db *Database) QueryRow(ctx context.Context, query string, args ...any) *sql.Row {
|
|
52
|
+
return db.Execable(ctx).QueryRowContext(ctx, query, args...)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
var ErrTransactionDeadlock = errors.New("attempt to start new transaction in goroutine with transaction")
|
|
56
|
+
var ErrQueryDeadlock = errors.New("attempt to query without context in goroutine with transaction")
|
|
57
|
+
var ErrAcquireDeadlock = errors.New("attempt to acquire connection without context in goroutine with transaction")
|
|
58
|
+
|
|
59
|
+
func (db *Database) BeginTx(ctx context.Context, opts *TxnOptions) (*LoggingTxn, error) {
|
|
60
|
+
if ctx == nil {
|
|
61
|
+
panic("BeginTx() called with nil ctx")
|
|
62
|
+
}
|
|
63
|
+
return db.LoggingDB.BeginTx(ctx, opts)
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
func (db *Database) DoTxn(ctx context.Context, opts *TxnOptions, fn func(ctx context.Context) error) error {
|
|
67
|
+
if ctx == nil {
|
|
68
|
+
panic("DoTxn() called with nil ctx")
|
|
69
|
+
}
|
|
70
|
+
if ctx.Value(db.txnCtxKey) != nil {
|
|
71
|
+
zerolog.Ctx(ctx).Trace().Msg("Already in a transaction, not creating a new one")
|
|
72
|
+
return fn(ctx)
|
|
73
|
+
} else if db.DeadlockDetection {
|
|
74
|
+
goroutineID := goid.Get()
|
|
75
|
+
if !db.txnDeadlockMap.Add(goroutineID) {
|
|
76
|
+
panic(ErrTransactionDeadlock)
|
|
77
|
+
}
|
|
78
|
+
defer db.txnDeadlockMap.Remove(goroutineID)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
log := zerolog.Ctx(ctx).With().Str("db_txn_id", random.String(12)).Logger()
|
|
82
|
+
slowLog := log
|
|
83
|
+
|
|
84
|
+
callerSkip := 1
|
|
85
|
+
if val := ctx.Value(ContextKeyDoTxnCallerSkip); val != nil {
|
|
86
|
+
callerSkip += val.(int)
|
|
87
|
+
}
|
|
88
|
+
if pc, file, line, ok := runtime.Caller(callerSkip); ok {
|
|
89
|
+
slowLog = log.With().Str(zerolog.CallerFieldName, zerolog.CallerMarshalFunc(pc, file, line)).Logger()
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
start := time.Now()
|
|
93
|
+
deadlockCh := make(chan struct{})
|
|
94
|
+
go func() {
|
|
95
|
+
ticker := time.NewTicker(5 * time.Second)
|
|
96
|
+
defer ticker.Stop()
|
|
97
|
+
|
|
98
|
+
for {
|
|
99
|
+
select {
|
|
100
|
+
case <-ticker.C:
|
|
101
|
+
slowLog.Warn().
|
|
102
|
+
Float64("duration_seconds", time.Since(start).Seconds()).
|
|
103
|
+
Msg("Transaction still running")
|
|
104
|
+
case <-deadlockCh:
|
|
105
|
+
return
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}()
|
|
109
|
+
defer func() {
|
|
110
|
+
close(deadlockCh)
|
|
111
|
+
dur := time.Since(start)
|
|
112
|
+
if dur > time.Second {
|
|
113
|
+
slowLog.Warn().
|
|
114
|
+
Float64("duration_seconds", dur.Seconds()).
|
|
115
|
+
Msg("Transaction took long")
|
|
116
|
+
}
|
|
117
|
+
}()
|
|
118
|
+
tx, err := db.BeginTx(ctx, opts)
|
|
119
|
+
if err != nil {
|
|
120
|
+
log.Trace().Err(err).Msg("Failed to begin transaction")
|
|
121
|
+
return exerrors.NewDualError(ErrTxnBegin, err)
|
|
122
|
+
}
|
|
123
|
+
log.Trace().Msg("Transaction started")
|
|
124
|
+
tx.noTotalLog = true
|
|
125
|
+
ctx = log.WithContext(ctx)
|
|
126
|
+
ctx = context.WithValue(ctx, db.txnCtxKey, tx)
|
|
127
|
+
err = fn(ctx)
|
|
128
|
+
if err != nil {
|
|
129
|
+
log.Trace().Err(err).Msg("Database transaction failed, rolling back")
|
|
130
|
+
rollbackErr := tx.Rollback()
|
|
131
|
+
if rollbackErr != nil {
|
|
132
|
+
log.Warn().Err(rollbackErr).Msg("Rollback after transaction error failed")
|
|
133
|
+
} else {
|
|
134
|
+
log.Trace().Msg("Rollback successful")
|
|
135
|
+
}
|
|
136
|
+
return err
|
|
137
|
+
}
|
|
138
|
+
err = tx.Commit()
|
|
139
|
+
if err != nil {
|
|
140
|
+
log.Trace().Err(err).Msg("Commit failed")
|
|
141
|
+
return exerrors.NewDualError(ErrTxnCommit, err)
|
|
142
|
+
}
|
|
143
|
+
log.Trace().Msg("Commit successful")
|
|
144
|
+
return nil
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
func (db *Database) Execable(ctx context.Context) Execable {
|
|
148
|
+
if ctx == nil {
|
|
149
|
+
panic("Conn() called with nil ctx")
|
|
150
|
+
}
|
|
151
|
+
txn, ok := ctx.Value(db.txnCtxKey).(Transaction)
|
|
152
|
+
if ok {
|
|
153
|
+
return txn
|
|
154
|
+
}
|
|
155
|
+
if db.DeadlockDetection && db.txnDeadlockMap.Has(goid.Get()) {
|
|
156
|
+
panic(ErrQueryDeadlock)
|
|
157
|
+
}
|
|
158
|
+
return &db.LoggingDB
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
func (db *Database) AcquireConn(ctx context.Context) (Conn, error) {
|
|
162
|
+
if ctx == nil {
|
|
163
|
+
return nil, fmt.Errorf("AcquireConn() called with nil ctx")
|
|
164
|
+
}
|
|
165
|
+
_, ok := ctx.Value(db.txnCtxKey).(Transaction)
|
|
166
|
+
if ok {
|
|
167
|
+
return nil, fmt.Errorf("cannot acquire connection while in a transaction")
|
|
168
|
+
}
|
|
169
|
+
if db.DeadlockDetection && db.txnDeadlockMap.Has(goid.Get()) {
|
|
170
|
+
panic(ErrAcquireDeadlock)
|
|
171
|
+
}
|
|
172
|
+
conn, err := db.RawDB.Conn(ctx)
|
|
173
|
+
if err != nil {
|
|
174
|
+
return nil, err
|
|
175
|
+
}
|
|
176
|
+
return &LoggingExecable{
|
|
177
|
+
UnderlyingExecable: conn,
|
|
178
|
+
db: db,
|
|
179
|
+
}, nil
|
|
180
|
+
}
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
// Copyright (c) 2023 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
|
+
"context"
|
|
11
|
+
"database/sql"
|
|
12
|
+
"errors"
|
|
13
|
+
"fmt"
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
type upgradeFunc func(context.Context, *Database) error
|
|
17
|
+
|
|
18
|
+
type upgrade struct {
|
|
19
|
+
message string
|
|
20
|
+
fn upgradeFunc
|
|
21
|
+
|
|
22
|
+
upgradesTo int
|
|
23
|
+
compatVersion int
|
|
24
|
+
transaction TxnMode
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
func (u *upgrade) DangerouslyRun(ctx context.Context, db *Database) (upgradesTo, compat int, err error) {
|
|
28
|
+
return u.upgradesTo, u.compatVersion, u.fn(ctx, db)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var ErrUnsupportedDatabaseVersion = errors.New("unsupported database schema version")
|
|
32
|
+
var ErrForeignTables = errors.New("the database contains foreign tables")
|
|
33
|
+
var ErrNotOwned = errors.New("the database is owned by")
|
|
34
|
+
var ErrUnsupportedDialect = errors.New("unsupported database dialect")
|
|
35
|
+
|
|
36
|
+
func DangerousInternalUpgradeVersionTable(ctx context.Context, db *Database) error {
|
|
37
|
+
return db.upgradeVersionTable(ctx)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
func (db *Database) upgradeVersionTable(ctx context.Context) error {
|
|
41
|
+
if compatColumnExists, err := db.ColumnExists(ctx, db.VersionTable, "compat"); err != nil {
|
|
42
|
+
return fmt.Errorf("failed to check if version table is up to date: %w", err)
|
|
43
|
+
} else if !compatColumnExists {
|
|
44
|
+
if tableExists, err := db.TableExists(ctx, db.VersionTable); err != nil {
|
|
45
|
+
return fmt.Errorf("failed to check if version table exists: %w", err)
|
|
46
|
+
} else if !tableExists {
|
|
47
|
+
_, err = db.Exec(ctx, fmt.Sprintf("CREATE TABLE %s (version INTEGER, compat INTEGER)", db.VersionTable))
|
|
48
|
+
if err != nil {
|
|
49
|
+
return fmt.Errorf("failed to create version table: %w", err)
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
_, err = db.Exec(ctx, fmt.Sprintf("ALTER TABLE %s ADD COLUMN compat INTEGER", db.VersionTable))
|
|
53
|
+
if err != nil {
|
|
54
|
+
return fmt.Errorf("failed to add compat column to version table: %w", err)
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return nil
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
func (db *Database) getVersion(ctx context.Context) (version, compat int, err error) {
|
|
62
|
+
if err = db.upgradeVersionTable(ctx); err != nil {
|
|
63
|
+
return
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
var compatNull sql.NullInt32
|
|
67
|
+
err = db.QueryRow(ctx, fmt.Sprintf("SELECT version, compat FROM %s LIMIT 1", db.VersionTable)).Scan(&version, &compatNull)
|
|
68
|
+
if errors.Is(err, sql.ErrNoRows) {
|
|
69
|
+
err = nil
|
|
70
|
+
}
|
|
71
|
+
if compatNull.Valid && compatNull.Int32 != 0 {
|
|
72
|
+
compat = int(compatNull.Int32)
|
|
73
|
+
} else {
|
|
74
|
+
compat = version
|
|
75
|
+
}
|
|
76
|
+
return
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const (
|
|
80
|
+
tableExistsPostgres = "SELECT EXISTS(SELECT 1 FROM information_schema.tables WHERE table_name=$1)"
|
|
81
|
+
tableExistsSQLite = "SELECT EXISTS(SELECT 1 FROM sqlite_master WHERE type='table' AND tbl_name=?1)"
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
func (db *Database) TableExists(ctx context.Context, table string) (exists bool, err error) {
|
|
85
|
+
switch db.Dialect {
|
|
86
|
+
case SQLite:
|
|
87
|
+
err = db.QueryRow(ctx, tableExistsSQLite, table).Scan(&exists)
|
|
88
|
+
case Postgres:
|
|
89
|
+
err = db.QueryRow(ctx, tableExistsPostgres, table).Scan(&exists)
|
|
90
|
+
default:
|
|
91
|
+
err = ErrUnsupportedDialect
|
|
92
|
+
}
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const (
|
|
97
|
+
columnExistsPostgres = "SELECT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_name=$1 AND column_name=$2)"
|
|
98
|
+
columnExistsSQLite = "SELECT EXISTS(SELECT 1 FROM pragma_table_info(?1) WHERE name=?2)"
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
func (db *Database) ColumnExists(ctx context.Context, table, column string) (exists bool, err error) {
|
|
102
|
+
switch db.Dialect {
|
|
103
|
+
case SQLite:
|
|
104
|
+
err = db.QueryRow(ctx, columnExistsSQLite, table, column).Scan(&exists)
|
|
105
|
+
case Postgres:
|
|
106
|
+
err = db.QueryRow(ctx, columnExistsPostgres, table, column).Scan(&exists)
|
|
107
|
+
default:
|
|
108
|
+
err = ErrUnsupportedDialect
|
|
109
|
+
}
|
|
110
|
+
return
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
const createOwnerTable = `
|
|
114
|
+
CREATE TABLE IF NOT EXISTS database_owner (
|
|
115
|
+
key INTEGER PRIMARY KEY DEFAULT 0,
|
|
116
|
+
owner TEXT NOT NULL
|
|
117
|
+
)
|
|
118
|
+
`
|
|
119
|
+
|
|
120
|
+
func (db *Database) checkDatabaseOwner(ctx context.Context) error {
|
|
121
|
+
var owner string
|
|
122
|
+
if !db.IgnoreForeignTables {
|
|
123
|
+
if exists, err := db.TableExists(ctx, "state_groups_state"); err != nil {
|
|
124
|
+
return fmt.Errorf("failed to check if state_groups_state exists: %w", err)
|
|
125
|
+
} else if exists {
|
|
126
|
+
return fmt.Errorf("%w (found state_groups_state, likely belonging to Synapse)", ErrForeignTables)
|
|
127
|
+
} else if exists, err = db.TableExists(ctx, "roomserver_rooms"); err != nil {
|
|
128
|
+
return fmt.Errorf("failed to check if roomserver_rooms exists: %w", err)
|
|
129
|
+
} else if exists {
|
|
130
|
+
return fmt.Errorf("%w (found roomserver_rooms, likely belonging to Dendrite)", ErrForeignTables)
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if db.Owner == "" {
|
|
134
|
+
return nil
|
|
135
|
+
}
|
|
136
|
+
if _, err := db.Exec(ctx, createOwnerTable); err != nil {
|
|
137
|
+
return fmt.Errorf("failed to ensure database owner table exists: %w", err)
|
|
138
|
+
} else if err = db.QueryRow(ctx, "SELECT owner FROM database_owner WHERE key=0").Scan(&owner); errors.Is(err, sql.ErrNoRows) {
|
|
139
|
+
_, err = db.Exec(ctx, "INSERT INTO database_owner (key, owner) VALUES (0, $1)", db.Owner)
|
|
140
|
+
if err != nil {
|
|
141
|
+
return fmt.Errorf("failed to insert database owner: %w", err)
|
|
142
|
+
}
|
|
143
|
+
} else if err != nil {
|
|
144
|
+
return fmt.Errorf("failed to check database owner: %w", err)
|
|
145
|
+
} else if owner != db.Owner {
|
|
146
|
+
return fmt.Errorf("%w %s", ErrNotOwned, owner)
|
|
147
|
+
}
|
|
148
|
+
return nil
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
func (db *Database) setVersion(ctx context.Context, version, compat int) error {
|
|
152
|
+
_, err := db.Exec(ctx, fmt.Sprintf("DELETE FROM %s", db.VersionTable))
|
|
153
|
+
if err != nil {
|
|
154
|
+
return err
|
|
155
|
+
}
|
|
156
|
+
_, err = db.Exec(ctx, fmt.Sprintf("INSERT INTO %s (version, compat) VALUES ($1, $2)", db.VersionTable), version, compat)
|
|
157
|
+
return err
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
func (db *Database) DoSQLiteTransactionWithoutForeignKeys(ctx context.Context, doUpgrade func(context.Context) error) error {
|
|
161
|
+
conn, err := db.AcquireConn(ctx)
|
|
162
|
+
if err != nil {
|
|
163
|
+
return fmt.Errorf("failed to acquire connection: %w", err)
|
|
164
|
+
}
|
|
165
|
+
_, err = conn.ExecContext(ctx, "PRAGMA foreign_keys=OFF")
|
|
166
|
+
if err != nil {
|
|
167
|
+
return fmt.Errorf("failed to disable foreign keys: %w", err)
|
|
168
|
+
}
|
|
169
|
+
err = db.DoTxn(ctx, &TxnOptions{Conn: conn}, func(ctx context.Context) error {
|
|
170
|
+
err := doUpgrade(ctx)
|
|
171
|
+
if err != nil {
|
|
172
|
+
return err
|
|
173
|
+
}
|
|
174
|
+
_, err = conn.ExecContext(ctx, "PRAGMA foreign_key_check")
|
|
175
|
+
if err != nil {
|
|
176
|
+
return fmt.Errorf("failed to check foreign keys after upgrade: %w", err)
|
|
177
|
+
}
|
|
178
|
+
return nil
|
|
179
|
+
})
|
|
180
|
+
if err != nil {
|
|
181
|
+
_, _ = conn.ExecContext(ctx, "PRAGMA foreign_keys=ON")
|
|
182
|
+
return err
|
|
183
|
+
}
|
|
184
|
+
_, err = conn.ExecContext(ctx, "PRAGMA foreign_keys=ON")
|
|
185
|
+
if err != nil {
|
|
186
|
+
return fmt.Errorf("failed to enable foreign keys: %w", err)
|
|
187
|
+
}
|
|
188
|
+
return nil
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
func (db *Database) Upgrade(ctx context.Context) error {
|
|
192
|
+
err := db.checkDatabaseOwner(ctx)
|
|
193
|
+
if err != nil {
|
|
194
|
+
return err
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
version, compat, err := db.getVersion(ctx)
|
|
198
|
+
if err != nil {
|
|
199
|
+
return err
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
if compat > len(db.UpgradeTable) {
|
|
203
|
+
if db.IgnoreUnsupportedDatabase {
|
|
204
|
+
db.Log.WarnUnsupportedVersion(version, compat, len(db.UpgradeTable))
|
|
205
|
+
return nil
|
|
206
|
+
}
|
|
207
|
+
return fmt.Errorf("%w: currently on v%d (compatible down to v%d), latest known: v%d", ErrUnsupportedDatabaseVersion, version, compat, len(db.UpgradeTable))
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
db.Log.PrepareUpgrade(version, compat, len(db.UpgradeTable))
|
|
211
|
+
logVersion := version
|
|
212
|
+
for version < len(db.UpgradeTable) {
|
|
213
|
+
upgradeItem := db.UpgradeTable[version]
|
|
214
|
+
if upgradeItem.fn == nil {
|
|
215
|
+
version++
|
|
216
|
+
continue
|
|
217
|
+
}
|
|
218
|
+
doUpgrade := func(ctx context.Context) error {
|
|
219
|
+
err = upgradeItem.fn(ctx, db)
|
|
220
|
+
if err != nil {
|
|
221
|
+
return fmt.Errorf("failed to run upgrade v%d->v%d: %w", version, upgradeItem.upgradesTo, err)
|
|
222
|
+
}
|
|
223
|
+
version = upgradeItem.upgradesTo
|
|
224
|
+
logVersion = version
|
|
225
|
+
err = db.setVersion(ctx, version, upgradeItem.compatVersion)
|
|
226
|
+
if err != nil {
|
|
227
|
+
return err
|
|
228
|
+
}
|
|
229
|
+
return nil
|
|
230
|
+
}
|
|
231
|
+
db.Log.DoUpgrade(logVersion, upgradeItem.upgradesTo, upgradeItem.message, upgradeItem.transaction)
|
|
232
|
+
switch upgradeItem.transaction {
|
|
233
|
+
case TxnModeOff:
|
|
234
|
+
err = doUpgrade(ctx)
|
|
235
|
+
case TxnModeOn:
|
|
236
|
+
err = db.DoTxn(ctx, nil, doUpgrade)
|
|
237
|
+
case TxnModeSQLiteForeignKeysOff:
|
|
238
|
+
switch db.Dialect {
|
|
239
|
+
case SQLite:
|
|
240
|
+
err = db.DoSQLiteTransactionWithoutForeignKeys(ctx, doUpgrade)
|
|
241
|
+
default:
|
|
242
|
+
err = db.DoTxn(ctx, nil, doUpgrade)
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if err != nil {
|
|
246
|
+
return err
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return nil
|
|
250
|
+
}
|